Blame | Last modification | View Log | Download
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 #include 16C84.INC
00001 ;
00002 ; Definice registru a zakladnich maker pro 16C84
00003 ;
00004 processor 16f84
00005 radix D
00006
0000 00007 __16C84__: ; Priznak modulu 16C84
00008
00009 ; Definice registru
00010
00000000 00011 IND0 equ 00H ; 0&1 Pristup na neprimou adresu
00000001 00012 TMR0 equ 01H ; 0 Real Time clock counter
00000002 00013 PCL equ 02H ; 0&1 Spodni cast PC
00000003 00014 STATUS equ 03H ; 0&1 Stavove bity
00000000 00015 _CARRY equ 0
00000001 00016 _DC equ 1
00000002 00017 _ZERO equ 2
00000003 00018 _PD equ 3
00000004 00019 _TO equ 4
00000005 00020 _RP0 equ 5
00000006 00021 _RP1 equ 6
00000007 00022 _IRP equ 7
00000004 00023 FSR equ 04H ; 0&1 Ukazatel pro neprime adresovani
00000005 00024 PORTA equ 05H ; 0&1 Data a rizeni portu A
00000006 00025 PORTB equ 06H ; 0&1 Data a rizeni portu B
00000008 00026 EEDATA_0 equ 08H ; 0 Data EEPROM
00000008 00027 EECON1_1 equ 08H ; 1 Rizeni EEPROM
00000000 00028 _EERD equ 0
00000001 00029 _EEWR equ 1
00000002 00030 _EEWREN equ 2
00000003 00031 _EEWRERR equ 3
00000004 00032 _EEIF equ 4
00000009 00033 EEADR_0 equ 09H ; 0 Adresa EEPROM
00000009 00034 EECON2_1 equ 09H ; 1 Aktivacni pseudoregistr
0000000A 00035 PCLATH equ 0AH ; 0&1 Horni cast PC pro move
0000000B 00036 INTCON equ 0BH ; 0&1 Rizeni preruseni
00000000 00037 _RBIF equ 0 ;
00000001 00038 _INTF equ 1
00000002 00039 _T0IF equ 2
00000003 00040 _RBIE equ 3
00000004 00041 _INTE equ 4
00000005 00042 _T0IE equ 5
00000006 00043 _EEIE equ 6
00000007 00044 _GIE equ 7
00045
00046 page0 macro
00047 bcf STATUS,_RP0
00048 endm
00049
00050 page1 macro
00051 bsf STATUS,_RP0
00052 endm
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00053 ;
00054 ; Sada maker pro porovnani a skoky
00055 ;
00056
00057 ;--- Compare ---
00058 CMP macro ZNAK, PROCEDURA ; if W=ZNAK then goto PROCEDURA
00059 xorlw ZNAK ; if W#ZNAK then zachovej W a neskakej
00060 btfsc STATUS,_ZERO
00061 goto PROCEDURA
00062 xorlw ZNAK
00063 endm
00064
00065 ;--- Skip if Carry ---
00066 SC macro
00067 btfss STATUS,_CARRY
00068 endm
00069
00070 ;--- Skip if not Carry ---
00071 SNC macro
00072 btfsc STATUS,_CARRY
00073 endm
00074
00075 ;--- Skip if Zero ---
00076 SZ macro
00077 btfss STATUS,_ZERO
00078 endm
00079
00080 ;--- Skip if not Zero ---
00081 SNZ macro
00082 btfsc STATUS,_ZERO
00083 endm
00084
00085 ;--- Skip if Borrow ( Negative ) --- ( po odecitani )
00086 SB macro
00087 btsfsc STATUS,_CARRY
00088 endm
00089 SN macro
00090 btfsc STATUS,_CARRY
00091 endm
00092
00093 ;--- Skip if not Borrow ( Positive ) --- ( po odecitani )
00094 SNB macro
00095 btfss STATUS,_CARRY
00096 endm
00097 SP macro
00098 btfss STATUS,_CARRY
00099 endm
00100
00101 cblock 0CH ; Prvni volny registr
00102 endc
00002
00003 #define debug 0
00004
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00005 #include delaymac.inc
00001 ;--- Macro na spozdeni 1ms az 255ms ---
00002 Delay1ms macro _ms
00003 if debug == 0
00004 movlw _ms
00005 movwf _delay_ms
00006 call _delay1ms
00007 endif
00008 endm
00009
00010 ;--- Macro na spozdeni 10us az 2,55ms ---
00011 Delay10us macro _us
00012 if debug == 0
00013 movlw _us
00014 movwf _delay_us
00015 call _delay10us
00016 endif
00017 endm
00018
00006
00000001 00007 Dozadu EQU 1
00000002 00008 Dopredu EQU 2
00009
00010 ;--- Macro na spozdeni 1ms az 255ms ---
00011 Delay macro ms
00012 Delay1ms ms
00013 ; movlw ms
00014 ; movwf _delay_ms
00015 ; call _delay1ms
00016 endm
00017 ;--------------------------------------
00018 Vpred_ON macro
00019 bsf PORTA, Dopredu
00020 endm
00021 ;--------------------------------------
00022 Vpred_OFF macro
00023 bcf PORTA, Dopredu
00024 Delay 50
00025 bsf PORTA, Dozadu ;zabrzdi
00026 Delay 125
00027 bcf PORTA, Dozadu
00028 endm
00029 ;--------------------------------------
00030 Vpred macro d
00031 movlw d ; x dlazdicek
00032 movwf CT3
00033 call Vpred0
00034 endm
00035
00036 ;--------------------------------------
0000 00037 org 0
00038
0000 2804 00039 goto Start
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00040 ;--------------------
0004 00041 org 4
00042 ;--------------------
0004 00043 Start:
00044 page1
0004 1683 M bsf STATUS,_RP0
0005 3000 00045 movlw 00000000B ; inicializace citace a prescaleru
0006 0081 00046 movwf TMR0
0007 3000 00047 movlw 00000000B ; konfigurace preruseni
0008 008B 00048 movwf INTCON
00049
00050 page1
0009 1683 M bsf STATUS,_RP0
000A 30F1 00051 movlw 11110001B ; nastaveni portu na vstup nebo vystup
000B 0085 00052 movwf PORTA ; 1=vstup 0=vystup
000C 30F6 00053 movlw 11110110B
000D 0086 00054 movwf PORTB
00055
000E 1781 00056 bsf TMR0, 7 ; vypni pull-up na PORTB (OPTION registr)
00057
00058 page0
000F 1283 M bcf STATUS,_RP0
00059
0010 0103 00060 clrw ; vynulovani portu
0011 0085 00061 movwf PORTA
0012 0086 00062 movwf PORTB
00063
0013 1586 00064 bsf PORTB, 3 ; Pridrz napajeni
00065
0014 1585 00066 bsf PORTA, 3 ; Rozsvit LED
00067 Delay 250
M Delay1ms 250
M if debug == 0
0015 30FA M movlw 250
0016 008C M movwf _delay_ms
0017 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
0018 1185 00068 bcf PORTA, 3 ; Zhasni LED
00069
0019 00070 MainLoop:
00071 Vpred 12
0019 300C M movlw 12 ; x dlazdicek
001A 008E M movwf CT3
001B 204A M call Vpred0
00072 Delay 200
M Delay1ms 200
M if debug == 0
001C 30C8 M movlw 200
001D 008C M movwf _delay_ms
001E 207F M call _delay1ms
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
001F 206E 00073 call Celemvzat
00074 Delay 50
M Delay1ms 50
M if debug == 0
0020 3032 M movlw 50
0021 008C M movwf _delay_ms
0022 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
00075 Vpred 8
0023 3008 M movlw 8 ; x dlazdicek
0024 008E M movwf CT3
0025 204A M call Vpred0
00076 Delay 50
M Delay1ms 50
M if debug == 0
0026 3032 M movlw 50
0027 008C M movwf _delay_ms
0028 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
0029 2075 00077 call Vlevo
00078 Vpred 8
002A 3008 M movlw 8 ; x dlazdicek
002B 008E M movwf CT3
002C 204A M call Vpred0
00079 Delay 50
M Delay1ms 50
M if debug == 0
002D 3032 M movlw 50
002E 008C M movwf _delay_ms
002F 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
00080 Vpred 1
0030 3001 M movlw 1 ; x dlazdicek
0031 008E M movwf CT3
0032 204A M call Vpred0
00081 Delay 50
M Delay1ms 50
M if debug == 0
0033 3032 M movlw 50
0034 008C M movwf _delay_ms
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0035 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
0036 2065 00082 call Vpravo
00083 Delay 50
M Delay1ms 50
M if debug == 0
0037 3032 M movlw 50
0038 008C M movwf _delay_ms
0039 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
00084 Vpred 8
003A 3008 M movlw 8 ; x dlazdicek
003B 008E M movwf CT3
003C 204A M call Vpred0
00085 Delay 50
M Delay1ms 50
M if debug == 0
003D 3032 M movlw 50
003E 008C M movwf _delay_ms
003F 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
0040 2075 00086 call Vlevo
00087 Delay 50
M Delay1ms 50
M if debug == 0
0041 3032 M movlw 50
0042 008C M movwf _delay_ms
0043 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
00088 Vpred 3
0044 3003 M movlw 3 ; x dlazdicek
0045 008E M movwf CT3
0046 204A M call Vpred0
0047 206E 00089 call Celemvzat
0048 1186 00090 bcf PORTB, 3 ; Vypni napajeni
0049 00091 Smycka:
0049 2849 00092 goto Smycka
00093 ;----------------
00094
00095 ;--- Popojede o n dlazdic vpred ---
004A 00096 Vpred0:
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00097 Vpred_ON
004A 1505 M bsf PORTA, Dopredu
00098 Delay 175
M Delay1ms 175
M if debug == 0
004B 30AF M movlw 175
004C 008C M movwf _delay_ms
004D 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
004E 1406 00099 bsf PORTB, 0
00100 Delay 15
M Delay1ms 15
M if debug == 0
004F 300F M movlw 15
0050 008C M movwf _delay_ms
0051 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
0052 1006 00101 bcf PORTB, 0
00102 Delay 175
M Delay1ms 175
M if debug == 0
0053 30AF M movlw 175
0054 008C M movwf _delay_ms
0055 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
00103 Vpred_OFF
0056 1105 M bcf PORTA, Dopredu
M Delay 50
M Delay1ms 50
M if debug == 0
0057 3032 M movlw 50
0058 008C M movwf _delay_ms
0059 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
005A 1485 M bsf PORTA, Dozadu ;zabrzdi
M Delay 125
M Delay1ms 125
M if debug == 0
005B 307D M movlw 125
005C 008C M movwf _delay_ms
005D 207F M call _delay1ms
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 8
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
005E 1085 M bcf PORTA, Dozadu
00104 Delay 50
M Delay1ms 50
M if debug == 0
005F 3032 M movlw 50
0060 008C M movwf _delay_ms
0061 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
0062 0B8E 00105 decfsz CT3, f
0063 284A 00106 goto Vpred0
0064 0008 00107 return
00108
0065 00109 Vpravo:
0065 1406 00110 bsf PORTB, 0
00111 Delay 250
M Delay1ms 250
M if debug == 0
0066 30FA M movlw 250
0067 008C M movwf _delay_ms
0068 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
00112 Delay 60
M Delay1ms 60
M if debug == 0
0069 303C M movlw 60
006A 008C M movwf _delay_ms
006B 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
006C 1006 00113 bcf PORTB, 0
006D 0008 00114 return
00115
00116 ;---------------------------------------
006E 00117 Celemvzat:
006E 2065 00118 call Vpravo
006F 1406 00119 bsf PORTB, 0
00120 Delay 125
M Delay1ms 125
M if debug == 0
0070 307D M movlw 125
0071 008C M movwf _delay_ms
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 9
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0072 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
0073 1006 00121 bcf PORTB, 0
0074 0008 00122 return
00123 ;---------------------------------------
0075 00124 Vlevo:
0075 2065 00125 call Vpravo
0076 1406 00126 bsf PORTB, 0
00127 Delay 250
M Delay1ms 250
M if debug == 0
0077 30FA M movlw 250
0078 008C M movwf _delay_ms
0079 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
00128 Delay 70
M Delay1ms 70
M if debug == 0
007A 3046 M movlw 70
007B 008C M movwf _delay_ms
007C 207F M call _delay1ms
M endif
M ; movlw ms
M ; movwf _delay_ms
M ; call _delay1ms
007D 1006 00129 bcf PORTB, 0
007E 0008 00130 return
00131
00132 #include delayfce.inc
00001 ;--- Spozdeni v nasobcich 1ms ----
007F 00002 _delay1ms:
007F 3064 00003 movlw 100 ; 1 ms
0080 008D 00004 movwf _delay_us
0081 2085 00005 call _delay10us
00006
0082 0B8C 00007 decfsz _delay_ms, f
0083 287F 00008 goto _delay1ms
0084 0008 00009 return
00010
00011 ;--- Spozdeni v nasobcich 10us ----
0085 00012 _delay10us: ; Prodleva (CT1 * 10us)+3us
0085 0000 00013 nop
0086 0000 00014 nop
0087 0000 00015 nop
0088 0000 00016 nop
0089 0000 00017 nop
008A 0000 00018 nop
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 10
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
008B 0000 00019 nop
008C 0B8D 00020 decfsz _delay_us, f
008D 2885 00021 goto _delay10us
008E 0008 00022 return
00023
00024 ;----------------------------
00025 ; Definice promenych pro spozdeni
00026 ;----------------------------
00027 cblock
0000000C 00028 _delay_ms ; Citac ms
0000000D 00029 _delay_us ; Citac 10us
00030 endc
00031
00133
00134 ;----------------------------
00135 ; Definice promenych
00136 ;----------------------------
00137 cblock
0000000E 00138 CT3 ;Citac poctu dlazdicek
00139 endc
00140
00141 end
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 11
SYMBOL TABLE
LABEL VALUE
CMP
CT3 0000000E
Celemvzat 0000006E
Delay
Delay10us
Delay1ms
Dopredu 00000002
Dozadu 00000001
EEADR_0 00000009
EECON1_1 00000008
EECON2_1 00000009
EEDATA_0 00000008
FSR 00000004
IND0 00000000
INTCON 0000000B
MainLoop 00000019
PCL 00000002
PCLATH 0000000A
PORTA 00000005
PORTB 00000006
SB
SC
SN
SNB
SNC
SNZ
SP
STATUS 00000003
SZ
Smycka 00000049
Start 00000004
TMR0 00000001
Vlevo 00000075
Vpravo 00000065
Vpred
Vpred0 0000004A
Vpred_OFF
Vpred_ON
_CARRY 00000000
_DC 00000001
_EEIE 00000006
_EEIF 00000004
_EERD 00000000
_EEWR 00000001
_EEWREN 00000002
_EEWRERR 00000003
_GIE 00000007
_INTE 00000004
_INTF 00000001
_IRP 00000007
_PD 00000003
_RBIE 00000003
_RBIF 00000000
MPASM 02.80 Released MAIN.ASM 7-12-2002 15:23:36 PAGE 12
SYMBOL TABLE
LABEL VALUE
_RP0 00000005
_RP1 00000006
_T0IE 00000005
_T0IF 00000002
_TO 00000004
_ZERO 00000002
__16C84__ 00000000
__16F84 00000001
_delay10us 00000085
_delay1ms 0000007F
_delay_ms 0000000C
_delay_us 0000000D
debug 0
page0
page1
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXX- ---------------- ---------------- ----------------
All other memory blocks unused.
Program Memory Words Used: 140
Program Memory Words Free: 884
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 0 suppressed