MPASM 03.00 Released CHEN_SIM.ASM 3-11-2003 10:57:28 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 00002 00003 LIST p=16F84 ; Définition de processeur 00004 #include ; Définitions de variables 00001 LIST 00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. 00136 LIST 00005 2007 3FF2 00006 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC 00007 00008 ; '__CONFIG' précise les paramètres encodés dans le processeur au moment de 00009 ; la programmation du processeur. Les définitions sont dans le fichier include. 00010 ; Voici les valeurs et leurs définitions : 00011 00012 ; _CP_ON Code protection ON : impossible de relire 00013 ; _CP_OFF Code protection OFF 00014 ; _PWRTE_ON Timer reset sur power on en service 00015 ; _PWRTE_OFF Timer reset hors-service 00016 ; _WDT_ON Watch-dog en service 00017 ; _WDT_OFF Watch-dog hors service 00018 ; _LP_OSC Oscillateur quartz basse vitesse 00019 ; _XT_OSC Oscillateur quartz moyenne vitesse 00020 ; _HS_OSC Oscillateur quartz grande vitesse 00021 ; _RC_OSC Oscillateur à réseau RC 00022 00023 ;********************************************************************* 00024 ; ASSIGNATIONS * 00025 ;********************************************************************* 00026 000000F9 00027 TRISA_VAL EQU H'F9' ; PORT A en entrée sauf 1 et 2 00000000 00028 TRISB_VAL EQU H'00' ; PORTB en sortie 000000A0 00029 INTCON_VAL EQU H'A0' ; Validation des interruptions pour le TIMER0 00000020 00030 OPTION_VAL EQU H'20' ; TIMER 0 en mode compteur avec prescaler : 2 000000FE 00031 INIT_TIMER EQU H'FE' ; valeur faible pour la simulation 000000FE 00032 INIT_CHEN EQU H'FE' ; 1 diode allumee 00033 ;********************************************************************* 00034 ; DEFINE * 00035 ;********************************************************************* 00036 00037 00038 #DEFINE BOUTON PORTA,0 ; bouton-poussoir 00039 #DEFINE SEG1 PORTA,1 ; segment du milieu 00040 #DEFINE SEG2 PORTA,2 ; segment du milieu 00041 00042 00043 ;********************************************************************* 00044 ; MACRO * 00045 ;********************************************************************* 00046 00047 BANK0 macro 00048 bcf STATUS , RP0 ; passer banque0 00049 endm 00050 MPASM 03.00 Released CHEN_SIM.ASM 3-11-2003 10:57:28 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00051 BANK1 macro 00052 bsf STATUS , RP0 ; passer banque1 00053 endm 00054 00055 ;********************************************************************* 00056 ; DECLARATIONS DE VARIABLES * 00057 ;********************************************************************* 00058 00059 CBLOCK 0x00C ; début de la zone variables 00060 0000000C 00061 w_temp : 1 ; Sauvegarde du registre W 0000000D 00062 status_temp : 1 ; Sauvegarde du registre STATUS 00063 00064 ENDC ; Fin de la zone 00065 00066 ;********************************************************************** 00067 ; DEMARRAGE SUR RESET * 00068 ;********************************************************************** 00069 0000 00070 org 0x00 ; Adresse de départ après reset 0000 2850 00071 goto init ; Adresse 0: initialiser 00072 00073 ;********************************************************************* 00074 ; INITIALISATIONS * 00075 ;********************************************************************* 00076 0050 00077 org 0x50 0050 00078 init 00079 00080 BANK1 ; sélectionner banque 1 0050 1683 M bsf STATUS , RP0 ; passer banque1 0051 30F9 00081 movlw TRISA_VAL ; charger valeur Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0052 0085 00082 movwf TRISA ; configurer le port A 0053 3000 00083 movlw TRISB_VAL ; charger valeur Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0054 0086 00084 movwf TRISB ; configurer le port B 0055 3020 00085 movlw OPTION_VAL ; charger valeur Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0056 0081 00086 movwf OPTION_REG ; configurer le TIMER0 00087 00088 BANK0 ; repasser banque 0 0057 1283 M bcf STATUS , RP0 ; passer banque0 0058 30A0 00089 movlw INTCON_VAL ; charger valeur 0059 008B 00090 movwf INTCON ; configurer les interruptions 005A 30FE 00091 movlw INIT_CHEN 005B 0086 00092 movwf PORTB 005C 30FE 00093 movlw INIT_TIMER ; valeur de réglage du timer 005D 0081 00094 movwf TMR0 00095 00096 ;********************************************************************* 00097 ; PROGRAMME PRINCIPAL * 00098 ;********************************************************************* MPASM 03.00 Released CHEN_SIM.ASM 3-11-2003 10:57:28 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00099 005E 00100 start 005E 1805 00101 btfsc BOUTON ; recopie du bouton sur le segment milieu 005F 2864 00102 goto cest1 0060 2861 00103 goto cest0 0061 1085 00104 cest0 bcf SEG1 0062 1105 00105 bcf SEG2 Warning[203]: Found opcode in column 1. (goto) 0063 285E 00106 goto start 0064 1485 00107 cest1 bsf SEG1 0065 1505 00108 bsf SEG2 Warning[203]: Found opcode in column 1. (goto) 0066 285E 00109 goto start Warning[203]: Found opcode in column 1. (goto) 0067 285E 00110 goto start 00111 00112 ;********************************************************************** 00113 ; ROUTINE INTERRUPTION * 00114 ;********************************************************************** 00115 00116 ;sauvegarder registres 00117 ;--------------------- 0004 00118 org 0x004 ; adresse d'interruption 0004 008C 00119 movwf w_temp ; sauver registre W 0005 0E03 00120 swapf STATUS,w ; swap status avec résultat dans w 0006 008D 00121 movwf status_temp ; sauver status swappé 00122 00123 00124 ;traitement de l'interruption 00125 ;---------------------------- 00126 0007 30FE 00127 movlw INIT_TIMER ; valeur de réglage du timer 0008 0081 00128 movwf TMR0 0009 0D86 00129 rlf PORTB,f ; décaler à gauche 000A 1406 00130 bsf PORTB,0 ; un 1 à droite 000B 1C03 00131 btfss STATUS,0 ; fin des 8 décalages 000C 1006 00132 bcf PORTB,0 ; reinitialise à FE 00133 00134 ;restaurer registres 00135 ;------------------- 000D 00136 restorereg 000D 0E0D 00137 swapf status_temp,w ; swap ancien status, résultat dans w 000E 0083 00138 _ movwf STATUS ; restaurer status 000F 0E8C 00139 swapf w_temp,f ; Inversion L et H de l'ancien W 00140 ; sans modifier Z 0010 0E0C 00141 swapf w_temp,w ; Réinversion de L et H dans W 00142 ; W restauré sans modifier status 0011 110B 00143 bcf INTCON,T0IF ; effacer flag interrupt timer 0012 0009 00144 retfie ; return from interrupt 00145 00146 00147 00148 MPASM 03.00 Released CHEN_SIM.ASM 3-11-2003 10:57:28 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00149 END ; directive fin de programme MPASM 03.00 Released CHEN_SIM.ASM 3-11-2003 10:57:28 PAGE 5 SYMBOL TABLE LABEL VALUE BANK0 BANK1 BOUTON PORTA,0 C 00000000 DC 00000001 EEADR 00000009 EECON1 00000088 EECON2 00000089 EEDATA 00000008 EEIE 00000006 EEIF 00000004 F 00000001 FSR 00000004 GIE 00000007 INDF 00000000 INIT_CHEN 000000FE INIT_TIMER 000000FE INTCON 0000000B INTCON_VAL 000000A0 INTE 00000004 INTEDG 00000006 INTF 00000001 IRP 00000007 NOT_PD 00000003 NOT_RBPU 00000007 NOT_TO 00000004 OPTION_REG 00000081 OPTION_VAL 00000020 PCL 00000002 PCLATH 0000000A PORTA 00000005 PORTB 00000006 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 RBIE 00000003 RBIF 00000000 RD 00000000 RP0 00000005 RP1 00000006 SEG1 PORTA,1 SEG2 PORTA,2 STATUS 00000003 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 TMR0 00000001 TRISA 00000085 TRISA_VAL 000000F9 TRISB 00000086 TRISB_VAL 00000000 MPASM 03.00 Released CHEN_SIM.ASM 3-11-2003 10:57:28 PAGE 6 SYMBOL TABLE LABEL VALUE W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 Z 00000002 _ 0000000E _CP_OFF 00003FFF _CP_ON 0000000F _HS_OSC 00003FFE _LP_OSC 00003FFC _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _XT_OSC 00003FFD __16F84 00000001 cest0 00000061 cest1 00000064 init 00000050 restorereg 0000000D start 0000005E status_temp 0000000D w_temp 0000000C MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---XXXXXXXXXXXX XXX------------- ---------------- ---------------- 0040 : ---------------- XXXXXXXXXXXXXXXX XXXXXXXX-------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 40 Program Memory Words Free: 984 Errors : 0 Warnings : 3 reported, 0 suppressed Messages : 3 reported, 0 suppressed