📄 sg5.sdi
字号:
,,,.device AT90S8535
,,,.equ sph =$3E
,,,.equ spl =$3D
,,,.equ PORTB =$18
,,,.equ DDRB =$17
,,,.equ PINB =$16
,,,.equ PORTC =$15
,,,.equ DDRC =$14
,,,.equ PINC =$13
,,,.equ PORTD =$12
,,,.equ DDRD =$11
,,,.equ PIND =$10
,,,.equ TCCR0 =$33
,,,.equ TCNT0 =$32
,,,.def ZH =r31
,,,.def ZL =r30
,,,
000000,C000,, rjmp main
000002,E002,main,main: ldi r16,$02 ;栈指针置初值
000004,BF0E,, out sph,r16
000006,E50F,, ldi r16,$5f
000008,BF0D,, out spl,r16
00000A,E007,, ldi r16,$07 ;上升沿计数
00000C,BF03,, out TCCR0,r16
00000E,E000,, ldi r16,0 ;T/C0置初值0
000010,BF02,, out TCNT0,r16
000012,E000,, ldi r16,$00
000014,BB07,, out DDRB,r16
000016,EF0F,, ldi r16,$ff ;PC口作输出
000018,BB04,, out DDRC,r16
00001A,BB01,, out DDRD,r16
00001C,BB08,, out PORTB,r16
00001E,B702,loop,loop: in r16,TCNT0
000020,D005,, rcall btd ;调二转十子程序
000022,2F62,, mov r22,r18 ;将BCD码送r18~r22
000024,2F51,, mov r21,r17
000026,2F40,, mov r20,r16
000028,D00C,, rcall smiao ;调动态扫描子程序
00002A,CFF9,, rjmp loop
,,,
00002C,EF2F,btd,btd: ser r18 ;r18先送-1
00002E,9523,btd_1,btd_1: inc r18
000030,5604,, subi r16,100 ;(r16)-100
000032,F7E8,, brcc btd_1 ;够减则返回btd_1
000034,590C,, subi r16,-100 ;不够减+100,恢复余数
000036,EF1F,, ser r17 ;r17先送-1
000038,9513,btd_2,btd_2: inc r17 ;r17增1
00003A,500A,, subi r16,10 ;(r16)-10
00003C,F7E8,, brcc btd_2 ;够减则返回btd_2
00003E,5F06,, subi r16,-10 ;不够减+10,恢复余数
000040,9508,, ret
,,,
000042,EF0E,smiao,smiao: ldi r16,$fe ;送个位位线
000044,BB02,, out PORTD,r16
000046,2F74,, mov r23,r20 ;将个位的BCD码送r23
000048,D00C,, rcall cqb ;查7段码,送B口输出
00004A,D011,, rcall t1ms ;延时1ms
00004C,EF0D,, ldi r16,$fd ;送十位位线
00004E,BB02,, out PORTD,r16
000050,2F75,, mov r23,r21 ;将十位的BCD码送r23
000052,D007,, rcall cqb ;查7段码,送B口输出
000054,D00C,, rcall t1ms ;延时1ms
000056,EF0B,, ldi r16,$fb ;送百位位线
000058,BB02,, out PORTD,r16
00005A,2F76,, mov r23,r22 ;将百位的BCD码送r23
00005C,D002,, rcall cqb ;查7段码,送B口输出
00005E,D007,, rcall t1ms ;延时1ms
000060,9508,, ret
,,,
000062,E0F0,cqb,cqb: ldi ZH,high(tab*2) ;7段码的首址给Z
000064,E8E2,, ldi ZL,low(tab*2)
000066,0FE7,, add ZL,r23 ;首地址+偏移量
000068,95C8,, lpm ;查表送C口输出
00006A,BA05,, out PORTC,r0
00006C,9508,, ret
,,,
00006E,E685,t1ms,t1ms: ldi r24,101 ;延时1ms子程序
000070,938F,, push r24
000072,938F,del2,del2: push r24
000074,958A,del3,del3: dec r24
000076,F7F1,, brne del3
000078,918F,, pop r24
00007A,958A,, dec r24
00007C,F7D1,, brne del2
00007E,918F,, pop r24
000080,9508,, ret
,,,
000082,0000,, .db $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f000041 063f
,,b,b
,,,6
,,d,d
,,f,f
,,,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -