Accueil
F6FCO
Ondes courtes
Le radioamateurisme
Station
Manipulateurs
Divers radio
Mecatronique
Robotique
CNC
Imprimante 3D
Electronique
Usinage
Divers
Travail du bois
Petits trucs
Divers
PIC18F258
Hello World
;************************************************************************************************ ; F6FCO ; Hello World ; 28 oct 2023 ; ;************************************************************************************************ Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct" list p=18f258 ; processeur utilisé #include
; Définitions des constantes PIC CONFIG OSC = XT CONFIG OSCS=OFF CONFIG PWRT = ON CONFIG BOR = OFF CONFIG BORV = 45 CONFIG WDT = OFF CONFIG WDTPS = 1 CONFIG STVR = OFF CONFIG LVP = OFF CONFIG DEBUG = ON CONFIG CP0 = OFF CONFIG CP1 = OFF CONFIG CP2 = OFF CONFIG CPB = OFF CONFIG CPD = OFF CONFIG WRT0 = OFF CONFIG WRT1 = OFF CONFIG WRT2 = OFF CONFIG WRTC = OFF CONFIG WRTB = OFF CONFIG WRTD = OFF CONFIG EBTR0 = OFF CONFIG EBTR1 = OFF CONFIG EBTR2 = OFF CONFIG EBTR3 = OFF CONFIG EBTRB = OFF ;#define bip PORTA,1 CBLOCK H'0' ;--------------- variables Reg_1 :1 ; tempo Reg_2 :1 ; tempo Reg_3 :1 ; tempo conchita :2 ; variable bonne à tout faire LcdLigne :1 ; LCD LcdColonne :1 ; LCD ENDC ORG H'0' init movlw b'01110011' movwf OSCCON ; oscillateur interne à 8 Mhz ; movlw 0Fh movwf ADCON1 ; mode digital ; movlw b'00000000' movwf TRISA clrf PORTA ; movlw b'00000000' movwf TRISB clrf PORTB ; movlw b'00000000' movwf TRISC clrf PORTC
#include
main bcf PORTB,4 nop call tempo300ms bsf PORTB,4 nop call tempo300ms bra main tempo300ms ; Délai 600 000 Cycles de la machine ; Durée du délai 300 millisecond ; Fréquence de l'oscillateur 8 MHZ movlw .51 movwf Reg_1,1 movlw .12 movwf Reg_2 movlw .4 movwf Reg_3 decfsz Reg_1,F,1 bra $-2 decfsz Reg_2 bra $-6 decfsz Reg_3 bra $-.10 nop nop return END
Hello World avec Timer0 en mode 8bits
;********************************************************************** ; ; Led clignotante avec TIMER0 ; ; ;********************************************************************** Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct" list p=18f258 ; processeur utilisé #include
; Définitions des constantes PIC CONFIG OSC = XT CONFIG OSCS=OFF CONFIG PWRT = ON CONFIG BOR = OFF CONFIG BORV = 45 CONFIG WDT = OFF CONFIG WDTPS = 1 CONFIG STVR = OFF CONFIG LVP = OFF CONFIG DEBUG = ON CONFIG CP0 = OFF CONFIG CP1 = OFF CONFIG CP2 = OFF CONFIG CPB = OFF CONFIG CPD = OFF CONFIG WRT0 = OFF CONFIG WRT1 = OFF CONFIG WRT2 = OFF CONFIG WRTC = OFF CONFIG WRTB = OFF CONFIG WRTD = OFF CONFIG EBTR0 = OFF CONFIG EBTR1 = OFF CONFIG EBTR2 = OFF CONFIG EBTR3 = OFF CONFIG EBTRB = OFF MasqueIntcon EQU H'00A0' ; réglage interruptions Timer0 #DEFINE LED PORTB,1 CBLOCK 0x00C w_temp :1 ; Sauvegarde du registre W status_temp : 1 ; Sauvegarde du registre STATUS cmpt : 1 ENDC org 0x000 ; Adresse de départ après reset bra init ; Adresse 0: initialiser ; ------------------------ Routines Interruptions ;sauvegarder registres org 0x008 ; adresse d'interruption movwf w_temp ; sauver registre W swapf STATUS,w ; swap status avec résultat dans w movwf status_temp ; sauver status swappé ; Interrupt TIMER0 btfsc INTCON,TMR0IE ; tester si interrupt timer autorisée btfss INTCON,TMR0IF ; oui, tester si interrupt timer en cours bra restorereg call inttimer ; oui, traiter interrupt timer bcf INTCON,TMR0IF ; effacer flag interrupt timer ;restaurer registres restorereg swapf status_temp,w ; swap ancien status, résultat dans w movwf STATUS ; restaurer status swapf w_temp,f ; Inversion L et H de l'ancien W ; sans modifier Z swapf w_temp,w ; Réinversion de L et H dans W ; W restauré sans modifier status retfie ; return from interrupt ; Routine d'interruption TIMER 0 inttimer decfsz cmpt,f ; décrémenter compteur de passages return ; pas 0, on ne fait rien movlw b'00000010' ; sélectionner bit à inverser xorwf PORTB , f ; inverser LED movlw d'7' ; on recommence à décompter movwf cmpt return ; fin d'interruption timer ; ------------------------ Init init clrf PORTA clrf PORTB clrf EEADR ; diminue la consommation movlw h'C7' ; Timer0 interne avec prescaler 256 movwf T0CON movlw 0Fh movwf ADCON1 ; mode digital movlw b'00000000' movwf TRISA movwf TRISB movlw MasqueIntcon ; masque interruption movwf INTCON ; charger interrupt control movlw d'7' movwf cmpt ; ----------------------------------- main nop nop bra main ; boucler END