📄 lab6.lst
字号:
0013 0586 M andwf PORTB,F
0014 01B0 00025 clrf LEDCtr ; Initialze Task Couters to 0
0015 01B1 00026 clrf PiezoCtr ; " (both LED and Piezo)
00027 LEDEnable H'FC' ; MACRO to setup I/O port to drive LEDs RB1 and RB0
0016 1683 1303 M BANKSEL TRISB
0018 30FC M movlw H'FC'
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0019 0086 M movwf TRISB
001A 1283 1303 M BANKSEL PORTB
00028 PiezoEnable D'500' ; 500 Hz Beep when PiezoOn is used
001C 1683 1303 M BANKSEL TRISC
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
MPASM 5.02 LAB6.ASM 4-13-2006 17:15:28 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
001E 1107 M bcf TRISC,2
001F 307C M movlw ((DEVICE_FREQ_HZ/D'64')/D'500')-1
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0020 0092 M movwf PR2
0021 303E M movlw ((DEVICE_FREQ_HZ/D'128')/D'500')
0022 1283 1303 M BANKSEL CCPR1L
0024 0095 M movwf CCPR1L
0025 3006 M movlw 0x06 ; Turn on TMR2 (for PWM)
0026 0092 M movwf T2CON ; and /16 prescale
0027 2050 00029 call DoReloadTimer ; Preload the timer for appropriate time delay
0028 1683 1303 00030 BANKSEL OPTION_REG ; set banking to access OPTION_REG in bank 1
002A 30C7 00031 movlw B'11000111' ; Set up TMR0 for 256 prescale and
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
002B 0081 00032 movwf OPTION_REG ; internal clock mode
002C 1283 1303 00033 BANKSEL PORTB ; Return to accessing BANK 0
00034
002E 30A0 00035 movlw B'10100000' ; Turn on GIE and TMR0 中断
002F 008B 00036 movwf INTCON ; "
00037
0030 00038 LEDTest
0030 3008 00039 movlw D'8' ; Test LED1 Counter Value for overflow
0031 0230 00040 subwf LEDCtr,W ; by subtracting 8 from it. Leave result in W
0032 1D03 00041 btfss STATUS,Z ; Test for 0 to determine if equal
0033 2835 00042 goto NotEqual1 ; If counter is not 8, test if LED should be on or off
0034 01B0 00043 clrf LEDCtr ; If counter is 8, it is reset to 0
0035 00044 NotEqual1
0035 3003 00045 movlw D'3' ; Test LED counter against "On" time
0036 0230 00046 subwf LEDCtr,W ; by subtracting 3 from it. Leave result in W
0037 1803 00047 btfsc STATUS,C ; Test for negative value to determine if less than 3
0038 283C 00048 goto TurnOffLED ; if 3 or more, goto LEDOff Code
0039 00049 TurnOnLED
00050 LEDOn 0 ; else, Turn on LED 0 since counter is less than 3
0039 3001 M movlw 1 << 0
003A 0486 M iorwf PORTB,F
003B 283E 00051 goto PiezoTest ; LED Testing done, goto PiezoTest
003C 00052 TurnOffLED
00053 LEDOff 0 ; Turn off LED since counter is 3 or more (up to 7)
003C 30FE M movlw H'FF' - ((1 << 0) & H'00FF')
003D 0586 M andwf PORTB,F
00054 ; LED Testing now done, so fall into PiezoTest
00055
003E 00056 PiezoTest
003E 301E 00057 movlw D'30' ; Test Piezo Counter Value
003F 0231 00058 subwf PiezoCtr,W ; by subtracting 30 from it. Leave result in W
0040 1D03 00059 btfss STATUS,Z ; Test for 0 to determine if equal
0041 2843 00060 goto NotEqual2 ; If counter is not 30, test if LED should be on or off
0042 01B1 00061 clrf PiezoCtr ; If counter is 30, it is reset to 0
0043 00062 NotEqual2
0043 300A 00063 movlw D'10' ; Test Piezo Counter against "On" time
0044 0231 00064 subwf PiezoCtr,W ; by subtracting 10 from it. Leave result in W
0045 1803 00065 btfsc STATUS,C ; Test for negative value to determine if less than 3
0046 284C 00066 goto TurnOffPiezo ; if 10 or more, goto LEDOff Code
0047 00067 TurnOnPiezo
MPASM 5.02 LAB6.ASM 4-13-2006 17:15:28 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00068 LEDOn 1 ; Turn on LED1
0047 3002 M movlw 1 << 1
0048 0486 M iorwf PORTB,F
00069 PiezoOn ; Turn on Piezo (by turning on CCP1)
0049 300C M movlw H'0C'
004A 0097 M movwf CCP1CON
004B 2830 00070 goto LEDTest ; manage tasks by returning to top of list
004C 00071 TurnOffPiezo
00072 LEDOff 1 ; Turn off LED1
004C 30FD M movlw H'FF' - ((1 << 1) & H'00FF')
004D 0586 M andwf PORTB,F
00073 PiezoOff ; Turn off Piezo (by turning off CCP1)
004E 0197 M clrf CCP1CON
004F 2830 00074 goto LEDTest ; manage tasks by returning to top of list
00075
00076 ; Subroutine to reload TMR0
0050 00077 DoReloadTimer
0050 303D 00078 movlw D'256' - D'195' ; Preload Timer to
0051 0081 00079 movwf TMR0 ; count 195 times before roll-over
0052 0008 00080 return ; return from subroutine
00081 END
MPASM 5.02 LAB6.ASM 4-13-2006 17:15:28 PAGE 7
SYMBOL TABLE
LABEL VALUE
ACKDT 00000005
ACKEN 00000004
ACKSTAT 00000006
ADCON0 0000001F
ADCON1 0000009F
ADCS0 00000006
ADCS1 00000007
ADCS2 00000006
ADDEN 00000003
ADFM 00000007
ADIE 00000006
ADIF 00000006
ADON 00000000
ADRESH 0000001E
ADRESL 0000009E
BCLIE 00000003
BCLIF 00000003
BF 00000000
BRGH 00000002
C 00000000
C1INV 00000004
C1OUT 00000006
C2INV 00000005
C2OUT 00000007
CCP1CON 00000017
CCP1IE 00000002
CCP1IF 00000002
CCP1M0 00000000
CCP1M1 00000001
CCP1M2 00000002
CCP1M3 00000003
CCP1X 00000005
CCP1Y 00000004
CCP2CON 0000001D
CCP2IE 00000000
CCP2IF 00000000
CCP2M0 00000000
CCP2M1 00000001
CCP2M2 00000002
CCP2M3 00000003
CCP2X 00000005
CCP2Y 00000004
CCPR1H 00000016
CCPR1L 00000015
CCPR2H 0000001C
CCPR2L 0000001B
CHS0 00000003
CHS1 00000004
CHS2 00000005
CIS 00000003
CKE 00000006
CKP 00000004
CM0 00000000
MPASM 5.02 LAB6.ASM 4-13-2006 17:15:28 PAGE 8
SYMBOL TABLE
LABEL VALUE
CM1 00000001
CM2 00000002
CMCON 0000009C
CMIE 00000006
CMIF 00000006
CREN 00000004
CSRC 00000007
CVR0 00000000
CVR1 00000001
CVR2 00000002
CVR3 00000003
CVRCON 0000009D
CVREN 00000007
CVROE 00000006
CVRR 00000005
D 00000005
DATA_ADDRESS 00000005
DC 00000001
DEVICE_FREQ_HZ D'4000000'
D_A 00000005
Dly0 00000020
Dly1 00000021
Dly2 00000022
Dly3 00000023
Dly32
DoDly32 00000401
DoReloadTimer 00000050
EEADR 0000010D
EEADRH 0000010F
EECON1 0000018C
EECON2 0000018D
EEDATA 0000010C
EEDATH 0000010E
EEIE 00000004
EEIF 00000004
EEPGD 00000007
F 00000001
FERR 00000002
FSR 00000004
GCEN 00000007
GIE 00000007
GO 00000002
GO_DONE 00000002
I2C_DATA 00000005
I2C_READ 00000002
I2C_START 00000003
I2C_STOP 00000004
IBF 00000007
IBOV 00000005
INDF 00000000
INTCON 0000000B
INTE 00000004
INTEDG 00000006
MPASM 5.02 LAB6.ASM 4-13-2006 17:15:28 PAGE 9
SYMBOL TABLE
LABEL VALUE
INTF 00000001
IRP 00000007
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -