Pic16f84

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Pic16f84 as PDF for free.

More details

  • Words: 1,104
  • Pages: 14
MICROCONTROLEUR ET PROGRAMATION

COMPTE RENDU DU TP N°01 Gestion des afficheurs 7 segments • Microcontrôleur : pic 16f84A • Programmation : assembleur sur MPLAB

Plan I. Affichage hexa d’une variable 8 bits sur 1 afficheur 7 segment II. Affichage hexa d’une variable 8 bits sur 2 afficheur 7 segment III.Affichage hexa d’une variable 8 bits sur 4 afficheur 7 segment IV. un compteur binaire

Groupe : E.I.2.2.2 •

LOUSSIF MOUHAMED AMINE



YAZID HAITHEM



CHAWKI ZGUIDER

I. Affichage hexa d’une variable 8 bits sur 1 afficheur 7 segment •

Description

Le code suivant permet d’incrémenter et d’afficher une variable hexadécimale de 8 bits sur un afficheur 7 segment. Un bouton poussoir liée au pin RB0 est programmé comme étant une interruption, l’appui sur ce bouton permet d’incrémenter cette variable.

Déclarer une variable compteur Compteur = 0  Conversion Hex  7seg

Afficheur

NON RB0=0 ?

OUI

Compteur++

NON RB0=0 ? 

OUI



Code assembleur

list p=16F84A ; list directive to define processor

goto r3 decfsz c2

#include ; processor specific variable definitions

goto r2 decfsz c1

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC

goto r1

var EQU 0X0C

return

c1 EQU 0X0D

MAIN

bsf STATUS,RP0

c2 EQU 0X0E

bcf STATUS,RP1

c3 EQU 0X0F

movlw 0x01

org 00h

movwf TRISB

goto MAIN of program

; go to beginning

clrf TRISA bcf STATUS,RP0

hex_2_7seg

clrf var

andlw 0x0F ;MSB DE W =0 debut

addwf PCL,f ;PCL=PCL+W

;conversion et affichage du LSB

retlw B'01111110'

movfw var

retlw B'00001100'

call hex_2_7seg

retlw B'10110110' retlw B'10011110'

bsf PORTA,0 ; RA0=1 AFF0 ON

retlw B'11001100' retlw B'11011010'

bcf PORTA,1; RA1= 0 AFF1 OFF

retlw B'11111010'

movwf PORTB

retlw B'00001110'

call tempo

retlw B'11111110'

;conversion et aff de MSB

retlw B'11011110'

swapf var ; MSB<->LSB

retlw B'11101110'

movfw var

retlw B'11111000'

swapf var

retlw B'01110010'

call hex_2_7seg

retlw B'10111100'

bcf PORTA,0

; RA0=0

bsf PORTA,1

; RA1=1

AFF0 OFF

retlw B'11110010' retlw B'11100010' tempo

AFF1 ON movwf PORTB

movlw 1

call tempo



Montage sur ISIS

I. Affichage hexa d’une variable 8 bits sur 2 afficheur 7 segment •

Description

Le programme suivant permet d’incrémenter et d’afficher un variable hexadécimal de 8 bits sur deux afficheurs 7 segments (affichage multiplexé), les deux afficheurs sont a cathode commune tels que les deux cathodes sont liés l’un au pin RA0 et l’autre au pin RA1.Un bouton poussoir liée au pin RB0 est programmé comme étant une interruption, l’appui sur ce bouton permet d’incrémenter cette variable. On suit l’organigramme suivant :

Initialisation PORT (E/S) Init(V1)  Convertir le LSB(V1) Hex7seg Activer Afficheur 0 Afficheur sur PORT B

Temporisation (25ms/s)

Convertir MSB(V1) Hex7seg

Activer afficheur 1

Temporisateur



Code assembleur

list p=16F84A define processor

; list directive to

decfsz c2 goto r2

#include ; processor specific variable definitions

decfsz c1 goto r1

__CONFIG _CP_ON & _WDT_OFF & _PWRTE_ON & _RC_OSC

return main bsf STATUS,RP0 ; basculer vers bank1

var EQU 0X0C ; 0x0C l'addresse du variable compteur c1 EQU 0X0D

clrf TRISB ; configuration du PORTB en sortie (Output) bsf TRISB,0 ; RB0 (input)

c2 EQU 0X0E

clrf TRISA ; PORTA (output)

c3 EQU 0X0F

bcf STATUS,RP0 ; basculer vers bank0

ORG 0

clrf var ; var=0

goto main retour

conversion andlw 0x0f ;(MSB de W )=0 addwf PCL,f ; PCL=PCL+W retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw

B'01111110' B'00001100' B'10110110' B'10011110' B'11001100' B'11011010' B'11111010' B'00001110' B'11111110' B'11011110' B'11101110' B'11111000' B'01110010' B'10111100' B'11110010' B'11100010'

tempo movlw 1 movwf c1

;code ;code ;code ;code ;code ;code ;code ;code ;code ;code ;code ;code ;code ;code ;code ;code

0 1 2 3 4 5 6 7 8 9 A B C D E F

;conversion et affichage du LSB movfw var call conversion bsf PORTA,0 ;RA0=1 AFF0 ON bcf PORTA,1 ;RA1=0 AFF1 OFF movwf PORTB call tempo ;conversion et affichage du MSB swapf var ; MSB <->LSB movfw var ; w=var swapf var ; MSB <->LSB call conversion bcf PORTA,0 ;RA0=0 AFF0 OFF bsf PORTA,1 ;RA1=1 AFF1 ON movwf PORTB

r1

r2

r3

movlw 85 ; 6*255*255 cycles

call tempo

movwf c2

btfss PORTB,0

movlw 0xff ; 255*255 cycles

goto retour

movwf c3

incf var

decfsz c3 ; 255 cycles goto r3

goto retour attente1 btfss PORTB,0 goto attente1 attente2 btfsc PORTB,0 goto attente2 incf var goto retour

END



Montage sur ISIS

I. Affichage hexa d’une variable 8 bits sur 4 afficheur 7 segment

Description Le programme suivant permet d’incrémenter et d’afficher un variable hexadécimal de 16 bits sur 4 afficheurs 7 segments(affichage multiplexé) ,les 4 afficheurs sont a cathode commune tels que les 4 cathodes sont liés aux pins RA0 ,RA1,RA2 et RA3.Un bouton poussoir liée au pin RB0 est programmé comme étant une interruption ,l’appui sur ce bouton permet d’incrémenter cette variable.

Code

Montage sur ISIS

II. UN COMPTEUR BINAIRE

• Description c’est un compteur binaire sur 8 bits qui compte de b’00000000’ jusqu'à b’11111111’ , à l’aide d’un pic 16f84A, deux bouton-poussoir, l’un relié à la pin RA0 (BP1) et l’autre à la pin RA1 (BP2) : - BP1 lance le programme -BP2 stoppe le comptage Le résultat est affiché sur deux afficheur 7 segments

• Code

LIST

p=16F84

; Définition de processeur

#include

__CONFIG

; Définitions de variables

_CP_OFF & _WDT_ON & _PWRTE_ON & _HS_OSC

;definitions

#DEFINE

bp1 PORTA,0

;définir le PORTA,0 par bp1

#DEFINE

bp2

;définir le PORTA,1 par bp2

#DEFINE

porb PORTB

PORTA,1

;définir le PORTB par porb

;declaration des variables

cblock

0x0c

; début de la zone variables

retard_1 :1

; le premier

retard_2 :1

; le deuxième registre pour la temporisation.

endc

registre pour la temporisation.

; fin de la zonz variable

;configuration des ports

org

0x00

; Adresse de départ après reset

bsf

STATUS,RP0

; acceder en bank1

movlw b'11111'

; configurerle PORTA en entré.

movwf TRISA clrf bcf

TRISB STATUS,RP0

; configurerle PORTB en sortie ; accéder en bank0

clrf

porb

; effacer le PORTB (initialisation)

btfsc

bp1

;controler le bp1, sauter si c'est le "0" (appui)

goto

debut

;boucler si c'est bp1=1 (c'est pas appui)

call

tempo

;retarder le zero.

incf

porb,f

;incrimenter

debut

star

btfsc bp2

;controler le bp2, sauter si c'est le "0" (appui)

goto

star

;continuait le comptage.

goto

debut

;si on clique sur bp1 on arrete la comptage.

tempo

;etiquette de la temporésation clrf retard_1

;initialiser retard_1

clrf retard_2

;initialiser retard_2

incfsz retard_1

;incrémenter et tester le débordement de reard_1

tempo_1

goto

tempo_1

incfsz retard_2 goto return

end

tempo_1

;boucler s'il n'est pas encor déborder. ;incrémenterle retard_2 si le tard1 est débrdé. ;refaire si le ratard_2 n'est pas encor déborder. ;retourne de la temporisation.

• Montage sur ISIS

Related Documents

Pic16f84
November 2019 17
Pic16f84
June 2020 2
Pic16f84 Tutor
May 2020 2
Pic16f84 Tr
October 2019 28