📄 zh1.lst
字号:
AVRASM ver. 1.30 zh1.ASM Thu Apr 19 09:52:31 2007
.device AT90S8535
.equ sph =$3E
.equ spl =$3D
.equ TIMSK =$39
.equ OCR1AH =$2B
.equ OCR1AL =$2A
.equ TCCR1B =$2E
.equ SREG =$3F
.equ TCNT1H =$2D
.equ TCNT1L =$2C
.equ PORTA =$1B
.equ DDRA =$1A
.equ PINA =$19
.equ PORTC =$15
.equ DDRC =$14
.equ PINC =$13
.equ PORTD =$12
.equ DDRD =$11
.equ PIND =$10
.def ZL =r30
.def ZH =r31
.org $0000
000000 c01e rjmp main
.org $006
000006 c085 rjmp t1_cp
000007 tab1: .db $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f,$77,$7c,$39,$5e,$79,$71
000007 063f
000008 4f5b
000009 6d66
00000a 077d
00000b 6f7f
00000c 7c77
00000d 5e39
00000e 7179
00000f tab2: .db $05,$eb,$05,$99,$04,$fc,$04,$70,$03,$f4,$03,$bc,$03,$54,$02,$f7,$02,$cc,$02,$7e,$02,$38,$01,$fa,$01,$df,$01,$aa,$01,$7b,$01,$66
00000f eb05
000010 9905
000011 fc04
000012 7004
000013 f403
000014 bc03
000015 5403
000016 f702
000017 cc02
000018 7e02
000019 3802
00001a fa01
00001b df01
00001c aa01
00001d 7b01
00001e 6601
00001f e002 main: ldi r16,$02 ;栈指针置初值
000020 bf0e out sph,r16
000021 e50f ldi r16,$5f
000022 bf0d out spl,r16
000023 ef0f ldi r16,$ff ;PA口定义为输出口
000024 bb0a out DDRA,r16
000025 e001 ldi r16,$01 ;PD0口定义为输出口
000026 bb01 out DDRD,r16
000027 e100 ldi r16,$10 ;允许T1比较匹配A中断
000028 bf09 out TIMSK,r16
000029 2700 clr r16 ;置TCNT1初值为0
00002a bd0c out TCNT1L,r16
00002b bd0d out TCNT1H,r16
00002c e00a ldi r16,$0a ;设置T/C1频率
00002d bd0e out TCCR1B,r16
00002e ef00 lscan: ldi r16,$f0
00002f bb04 out DDRC,r16
000030 bb05 out PORTC,r16
000031 b303 l1: in r16,PINC
000032 3f01 cpi r16,$f1
000033 f431 brne l2
000034 d05d rcall t1ms
000035 b303 in r16,PINC
000036 3f01 cpi r16,$f1
000037 f411 brne l2
000038 e010 ldi r17,$00
000039 c014 rjmp rscan
00003a 3f02 l2: cpi r16,$f2
00003b f429 brne l3
00003c d055 rcall t1ms
00003d 3f02 cpi r16,$f2
00003e f411 brne l3
00003f e011 ldi r17,$01
000040 c00d rjmp rscan
000041 3f04 l3: cpi r16,$f4
000042 f429 brne l4
000043 d04e rcall t1ms
000044 3f04 cpi r16,$f4
000045 f411 brne l4
000046 e012 ldi r17,$02
000047 c006 rjmp rscan
000048 3f08 l4: cpi r16,$f8
000049 f721 brne lscan
00004a d047 rcall t1ms
00004b 3f08 cpi r16,$f8
00004c f709 brne lscan
00004d e013 ldi r17,$03
00004e e00f rscan: ldi r16,$0f
00004f bb04 out DDRC,r16
000050 bb05 out PORTC,r16
000051 b303 c1: in r16,PINC
000052 3e00 cpi r16,$e0
000053 f411 brne c2
000054 e020 ldi r18,$00
000055 c00b rjmp calcu
000056 3d00 c2: cpi r16,$d0
000057 f411 brne c3
000058 e021 ldi r18,$01
000059 c007 rjmp calcu
00005a 3b00 c3: cpi r16,$b0
00005b f411 brne c4
00005c e022 ldi r18,$02
00005d c003 rjmp calcu
00005e 3700 c4: cpi r16,$70
00005f f671 brne lscan
000060 e023 ldi r18,$03
000061 3010 calcu: cpi r17,$00 ;计算键号
000062 f411 brne calcu1
000063 e010 ldi r17,$00
000064 c009 rjmp cb
000065 3011 calcu1: cpi r17,$01
000066 f411 brne calcu2
000067 e014 ldi r17,$04
000068 c005 rjmp cb
000069 3012 calcu2: cpi r17,$02
00006a f411 brne calcu3
00006b e018 ldi r17,$08
00006c c001 rjmp cb
00006d e01c calcu3: ldi r17,$0C
00006e 0f12 cb: add r17,r18
00006f 2f41 mov r20,r17
000070 0f44 lsl r20
000071 e0f0 ldi ZH,high(tab2*2)
000072 e1ee ldi ZL,low(tab2*2)
000073 0fe4 add ZL,r20
000074 95c8 lpm
000075 bc0b out OCR1AH,r0
000076 95e3 inc ZL
000077 95c8 lpm
000078 bc0a out OCR1AL,r0
000079 9478 sei
00007a d00b rcall cqb
00007b ef00 w0: ldi r16,$f0 ;等待按键释放
00007c bb05 out PORTC,r16
00007d b303 w1: in r16,PINC
00007e 7f0f andi r16,$ff
00007f 3f00 cpi r16,$f0
000080 f421 brne w2
000081 94f8 cli
000082 e000 ldi r16,$00
000083 bb0b out PORTA,r16
000084 cfa9 rjmp lscan
000085 cff5 w2: rjmp w0
000086 e0f0 cqb: ldi ZH,high(tab1*2) ;7段码的首址给Z
000087 e0ee ldi ZL,low(tab1*2)
000088 0fe1 add ZL,r17 ;首地址+偏移量
000089 95c8 lpm ;查表送B口输出
00008a ba0b out PORTA,r0
00008b 9508 ret
00008c b61f t1_cp: in r1,sreg ;保护标志
00008d b222 in r2,PORTD ;PD口取反
00008e 9420 com r2
00008f ba22 out PORTD,r2
000090 be1f out sreg,r1 ;标志恢复
000091 9518 reti
000092 e086 t1ms: ldi r24,6 ;延时子程序
000093 938f push r24
000094 938f del2: push r24
000095 958a del3: dec r24
000096 f7f1 brne del3
000097 918f pop r24
000098 958a dec r24
000099 f7d1 brne del2
00009a 918f pop r24
00009b 9508 ret
Assembly complete with no errors.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -