📄 sg5.lst
字号:
AVRASM ver. 1.30 sg5.ASM Thu Apr 19 10:38:47 2007
.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
000001 e002 main: ldi r16,$02 ;栈指针置初值
000002 bf0e out sph,r16
000003 e50f ldi r16,$5f
000004 bf0d out spl,r16
000005 e007 ldi r16,$07 ;上升沿计数
000006 bf03 out TCCR0,r16
000007 e000 ldi r16,0 ;T/C0置初值0
000008 bf02 out TCNT0,r16
000009 e000 ldi r16,$00
00000a bb07 out DDRB,r16
00000b ef0f ldi r16,$ff ;PC口作输出
00000c bb04 out DDRC,r16
00000d bb01 out DDRD,r16
00000e bb08 out PORTB,r16
00000f b702 loop: in r16,TCNT0
000010 d005 rcall btd ;调二转十子程序
000011 2f62 mov r22,r18 ;将BCD码送r18~r22
000012 2f51 mov r21,r17
000013 2f40 mov r20,r16
000014 d00c rcall smiao ;调动态扫描子程序
000015 cff9 rjmp loop
000016 ef2f btd: ser r18 ;r18先送-1
000017 9523 btd_1: inc r18
000018 5604 subi r16,100 ;(r16)-100
000019 f7e8 brcc btd_1 ;够减则返回btd_1
00001a 590c subi r16,-100 ;不够减+100,恢复余数
00001b ef1f ser r17 ;r17先送-1
00001c 9513 btd_2: inc r17 ;r17增1
00001d 500a subi r16,10 ;(r16)-10
00001e f7e8 brcc btd_2 ;够减则返回btd_2
00001f 5f06 subi r16,-10 ;不够减+10,恢复余数
000020 9508 ret
000021 ef0e smiao: ldi r16,$fe ;送个位位线
000022 bb02 out PORTD,r16
000023 2f74 mov r23,r20 ;将个位的BCD码送r23
000024 d00c rcall cqb ;查7段码,送B口输出
000025 d011 rcall t1ms ;延时1ms
000026 ef0d ldi r16,$fd ;送十位位线
000027 bb02 out PORTD,r16
000028 2f75 mov r23,r21 ;将十位的BCD码送r23
000029 d007 rcall cqb ;查7段码,送B口输出
00002a d00c rcall t1ms ;延时1ms
00002b ef0b ldi r16,$fb ;送百位位线
00002c bb02 out PORTD,r16
00002d 2f76 mov r23,r22 ;将百位的BCD码送r23
00002e d002 rcall cqb ;查7段码,送B口输出
00002f d007 rcall t1ms ;延时1ms
000030 9508 ret
000031 e0f0 cqb: ldi ZH,high(tab*2) ;7段码的首址给Z
000032 e8e2 ldi ZL,low(tab*2)
000033 0fe7 add ZL,r23 ;首地址+偏移量
000034 95c8 lpm ;查表送C口输出
000035 ba05 out PORTC,r0
000036 9508 ret
000037 e685 t1ms: ldi r24,101 ;延时1ms子程序
000038 938f push r24
000039 938f del2: push r24
00003a 958a del3: dec r24
00003b f7f1 brne del3
00003c 918f pop r24
00003d 958a dec r24
00003e f7d1 brne del2
00003f 918f pop r24
000040 9508 ret
000041 tab: .db $3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f000041 063f
000042 4f5b
000043 6d66
000044 077d
000045 6f7f
Assembly complete with no errors.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -