;÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ; Nom: multipin3.asm - Six leds sur 3 ports ! list p=12F675 #include errorlevel -302 __CONFIG h'3F84' CBLOCK 0x040 VA_cpt1, VA_cpt10, VA_cpt256 ENDC ORG 0x000 bsf STATUS, RP0 ; Saut en banque 1, init des deux registres pièges ! movlw d'7' movwf CMCON ; Comparateurs HS (GPIO tout libre) (pour 675 & 629) clrf ANSEL ; Pas d'analogique (GPIO tout numérique) (675 seult) ;÷÷÷÷÷÷÷ PROGRAMME ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ Debut: bsf STATUS, RP0 ; Car TRISIO en banque 1 ; Légendes : ; LAMPE L1 ; TRISIO : xxxx1100 ; x => on s'en fiche movlw d'12' ; Traduc binaire vers ; 1 => I = input= entrée movwf TRISIO ; décimal : 0+0+2+4 ; Ø => O = output=sortie bcf STATUS, RP0 ; GPIO : xxxx xz10 ; z => haute impédance movlw d'2' ; Traduc binaire vers movwf GPIO ; décimal: d'2'= 0+0+2+0, identiq. à b'00000010' call SP_delai ; 90 millisecondes ; LAMPE L2 ; TRISIO ne bouge pas movlw d'1' movwf GPIO call SP_delai ; LAMPE L3 bsf STATUS, RP0 movlw d'9' ; TRISIO : xxxx 1001 movwf TRISIO bcf STATUS, RP0 movlw d'4' ; GPIO : xxxx x10z movwf GPIO call SP_delai ; LAMPE L4 ; TRISIO ne bouge pas movlw d'2' ; GPIO : xxxx x01z movwf GPIO call SP_delai ; LAMPE L5 bsf STATUS, RP0 movlw d'10' ; TRISIO : xxxx 1010 movwf TRISIO bcf STATUS, RP0 movlw d'4' ; GPIO : xxxx x1z0 movwf GPIO call SP_delai ; LAMPE L6 ; TRISIO ne bouge pas movlw d'1' ; GPIO : xxxx x0z1 movwf GPIO call SP_delai goto Debut ; Boucle sans fin ; SP_delai (sous-programme délai : 7x50x256= 90 000 uS) ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ SP_delai: ; cf. "Cheniyou" pour détails movlw d'7' movwf VA_cpt1 ET_delai1: decfsz VA_cpt1,f goto ET_delai2 return ET_delai2: movlw d'50' movwf VA_cpt10 ET_delai3: decfsz VA_cpt10,f goto ET_delai4 goto ET_delai1 ET_delai4: decfsz VA_cpt256,f goto ET_delai4 goto ET_delai3 END