|

|
Ce programme fait scintiller de manière aléatoire une led branchée sur la 9ème broche du PIC16F628. L'intensité est générée par l'unité de PWM (Pulse with modulation) du 628. La valeur du rapport cyclique est changée lors d'une interruption sur le Timer0. On charge alors une valeur aléatoire dans la valeur du rapport cyclique du PWM à l'aide de la routine RANDOM :
RANDOM
MOVF RAND_HI, W ; if current random is 0000, make it 00FFH
IORWF RAND_LO, W
BTFSC STATUS, Z
COMF RAND_LO, F
BTFSS RAND_HI, 6 ; hi.7 = hi.7 xor hi.6
MOVLW 00H
BTFSC RAND_HI, 6
MOVLW 80H
XORWF RAND_HI, F
BTFSS RAND_HI, 4 ; hi.7 = hi.7 xor hi.4
MOVLW 00H
BTFSC RAND_HI, 4
MOVLW 80H
XORWF RAND_HI, F
BTFSS RAND_LO, 3 ; hi.7 = hi.7 xor lo.3
MOVLW 00H
BTFSC RAND_LO, 3
MOVLW 80H
XORWF RAND_HI, F
RLF RAND_HI, W ; carry = hi.7
RLF RAND_LO, F ; double left shift
RLF RAND_HI, F
movf RAND_LO,W
RETURN
Le schéma :
Le code : BOUGIE.ASM
|
Design © 2003 LW pour
kitgrafik
|
 |
N'hésitez pas à poser vos questions sur le
Forum
|
|