📄 zh1.sdi
字号:
,,,.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
00000C,C085,, rjmp t1_cp
,,,
00000E,0000,, .db $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f,$77,$7c,$39,$5e,$79,$71
,,f,f
,,b,b
,,,6
,,d,d
,,f,f
,,,7
,,,9
,,,9
00001E,0000,, .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
,,,5
,,,5
,,,4
,,,4
,,,3
,,,3
,,,3
,,,2
,,,2
,,,2
,,,2
,,,1
,,,1
,,,1
,,,1
,,,1
,,,
00003E,E002,main,main: ldi r16,$02 ;栈指针置初值
000040,BF0E,, out sph,r16
000042,E50F,, ldi r16,$5f
000044,BF0D,, out spl,r16
000046,EF0F,, ldi r16,$ff ;PA口定义为输出口
000048,BB0A,, out DDRA,r16
00004A,E001,, ldi r16,$01 ;PD0口定义为输出口
00004C,BB01,, out DDRD,r16
00004E,E100,, ldi r16,$10 ;允许T1比较匹配A中断
000050,BF09,, out TIMSK,r16
000052,2700,, clr r16 ;置TCNT1初值为0
000054,BD0C,, out TCNT1L,r16
000056,BD0D,, out TCNT1H,r16
000058,E00A,, ldi r16,$0a ;设置T/C1频率
00005A,BD0E,, out TCCR1B,r16
,,,
00005C,EF00,lscan,lscan: ldi r16,$f0
00005E,BB04,, out DDRC,r16
000060,BB05,, out PORTC,r16
000062,B303,l1,l1: in r16,PINC
000064,3F01,, cpi r16,$f1
000066,F431,, brne l2
000068,D05D,, rcall t1ms
00006A,B303,, in r16,PINC
00006C,3F01,, cpi r16,$f1
00006E,F411,, brne l2
000070,E010,, ldi r17,$00
000072,C014,, rjmp rscan
000074,3F02,l2,l2: cpi r16,$f2
000076,F429,, brne l3
000078,D055,, rcall t1ms
00007A,3F02,, cpi r16,$f2
00007C,F411,, brne l3
00007E,E011,, ldi r17,$01
000080,C00D,, rjmp rscan
000082,3F04,l3,l3: cpi r16,$f4
000084,F429,, brne l4
000086,D04E,, rcall t1ms
000088,3F04,, cpi r16,$f4
00008A,F411,, brne l4
00008C,E012,, ldi r17,$02
00008E,C006,, rjmp rscan
000090,3F08,l4,l4: cpi r16,$f8
000092,F721,, brne lscan
000094,D047,, rcall t1ms
000096,3F08,, cpi r16,$f8
000098,F709,, brne lscan
00009A,E013,, ldi r17,$03
00009C,E00F,rscan,rscan: ldi r16,$0f
00009E,BB04,, out DDRC,r16
0000A0,BB05,, out PORTC,r16
0000A2,B303,c1,c1: in r16,PINC
0000A4,3E00,, cpi r16,$e0
0000A6,F411,, brne c2
0000A8,E020,, ldi r18,$00
0000AA,C00B,, rjmp calcu
0000AC,3D00,c2,c2: cpi r16,$d0
0000AE,F411,, brne c3
0000B0,E021,, ldi r18,$01
0000B2,C007,, rjmp calcu
0000B4,3B00,c3,c3: cpi r16,$b0
0000B6,F411,, brne c4
0000B8,E022,, ldi r18,$02
0000BA,C003,, rjmp calcu
0000BC,3700,c4,c4: cpi r16,$70
0000BE,F671,, brne lscan
0000C0,E023,, ldi r18,$03
,,,
0000C2,3010,calcu,calcu: cpi r17,$00 ;计算键号
0000C4,F411,, brne calcu1
0000C6,E010,, ldi r17,$00
0000C8,C009,, rjmp cb
0000CA,3011,calcu1,calcu1: cpi r17,$01
0000CC,F411,, brne calcu2
0000CE,E014,, ldi r17,$04
0000D0,C005,, rjmp cb
0000D2,3012,calcu2,calcu2: cpi r17,$02
0000D4,F411,, brne calcu3
0000D6,E018,, ldi r17,$08
0000D8,C001,, rjmp cb
0000DA,E01C,calcu3,calcu3: ldi r17,$0C
0000DC,0F12,cb,cb: add r17,r18
0000DE,2F41,, mov r20,r17
0000E0,0F44,, lsl r20
0000E2,E0F0,, ldi ZH,high(tab2*2)
0000E4,E1EE,, ldi ZL,low(tab2*2)
0000E6,0FE4,, add ZL,r20
0000E8,95C8,, lpm
0000EA,BC0B,, out OCR1AH,r0
0000EC,95E3,, inc ZL
0000EE,95C8,, lpm
0000F0,BC0A,, out OCR1AL,r0
0000F2,9478,, sei
0000F4,D00B,, rcall cqb
0000F6,EF00,w0,w0: ldi r16,$f0 ;等待按键释放
0000F8,BB05,, out PORTC,r16
0000FA,B303,w1,w1: in r16,PINC
0000FC,7F0F,, andi r16,$ff
0000FE,3F00,, cpi r16,$f0
000100,F421,, brne w2
000102,94F8,, cli
000104,E000,, ldi r16,$00
000106,BB0B,, out PORTA,r16
000108,CFA9,, rjmp lscan
00010A,CFF5,w2,w2: rjmp w0
,,,
00010C,E0F0,cqb,cqb: ldi ZH,high(tab1*2) ;7段码的首址给Z
00010E,E0EE,, ldi ZL,low(tab1*2)
000110,0FE1,, add ZL,r17 ;首地址+偏移量
000112,95C8,, lpm ;查表送B口输出
000114,BA0B,, out PORTA,r0
000116,9508,, ret
,,,
000118,B61F,t1_cp,t1_cp: in r1,sreg ;保护标志
00011A,B222,, in r2,PORTD ;PD口取反
00011C,9420,, com r2
00011E,BA22,, out PORTD,r2
000120,BE1F,, out sreg,r1 ;标志恢复
000122,9518,, reti
,,,
000124,E086,t1ms,t1ms: ldi r24,6 ;延时子程序
000126,938F,, push r24
000128,938F,del2,del2: push r24
00012A,958A,del3,del3: dec r24
00012C,F7F1,, brne del3
00012E,918F,, pop r24
000130,958A,, dec r24
000132,F7D1,, brne del2
000134,918F,, pop r24
000136,9508,, ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -