⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sg5.lst

📁 基于PROTERUS仿真的AVR例子
💻 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 + -