sg2.asm

来自「the practice of proteus and avr」· 汇编 代码 · 共 43 行

ASM
43
字号
.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
.def 	ZH     	=r31
.def 	ZL     	=r30
	rjmp	reset
tab:	.db	$3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f
					;7段码表
reset:	ldi	r16,$02			;栈指针置初值
	out	sph,r16
	ldi	r16,$5f
	out	spl,r16
	ldi	r16,0			;定义B口输入带上拉
	out	ddrb,r16
	ldi	r16,$ff
	out	portb,r16
	out	ddrc,r16		;定义C口、D口为输出
	out	ddrd,r16
	in	r16,pinb		;读B口引脚
	com	r16			;取反
	mov	r17,r16
	andi	r16,$0f			;取个位BCD码
	swap	r17			;半字节交换
	andi	r17,$0f			;取十位BCD码
	ldi	ZH,high(tab*2)		;查个位7段码
	ldi	ZL,low(tab*2)
	add	ZL,r16
	lpm
	out	portc,r0		;送D口静态输出
	ldi	ZH,high(tab*2)
	ldi	ZL,low(tab*2)
	add	ZL,r17
	lpm
	out	portd,r0
	rjmp	reset

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?