📄 模拟比较ad.asm
字号:
;****************************AVR 单片机实验测试程序 ************************
;;*
;* 标题: 廉位的A/D转换器
;* 版本: 1.0
;*最后更新日期: 2000.08.08
;*
;* 支援 E-mail: gzsl@sl.com.cn
;*
;* 描述
;* 用AVR Studio调试软件窗口观察指令执行变化情况
;* 作者: SL.Z
;*程序适用于所有单片机
;***************************************************************************
;****************************************************************************
;*
;* 硬件电路及说明阅<<廉价的A/D转换器>>一文
;* 本程序实测调试通过
;*
;****************************************************************************
.include"1200def.inc"
.org $0000
rjmp reset
.org $0002
rjmp inter
.org $0003
rjmp inter
.org $0010
reset: ldi r20,$ff ;设置D口为输出
out ddrd,r20
sbi $18,7
sbi $18,6
ldi r20,$fe
mov r0,r20
ldi r20,$b0
mov r1,r20
ldi r20,$ed
mov r2,r20
ldi r20,$f9
mov r3,r20
ldi r20,$b3
mov r4,r20
ldi r20,$db
mov r5,r20
ldi r20,$df
mov r6,r20
ldi r20,$f0
mov r7,r20
ldi r20,$ff
mov r8,r20
ldi r20,$f3
mov r9,r20
ldi r20,$f7
mov r10,r20
ldi r20,$9f
mov r11,r20
ldi r20,$ce
mov r12,r20
ldi r20,$bd
mov r13,r20
ldi r20,$cf
mov r14,r20
ldi r20,$c7
mov r15,r20
main: rcall conini ;初始化A/D转换器
sei
ldi r16,$fc
out ddrb,r16
ddelay: clr r16 ;延时
ldi r17,$f1
loop: inc r16
brne loop
inc r17
brne loop
rcall adconv ;启动转换器
wait: brtc wait ;等待中断
clt
rcall fetch ;取显示
ldi r20,$38
start: mov r30,r28
display:andi r30,$f0 ;显示高位
swap r30
ledh: ld r25,z
out portd,r25
sbi $18,6
cbi $18,7
ldi r27,$10
delay1: dec r26 ;延时
brne delay1
dec r27
brne delay1
sbi $18,7
nop
mov r30,r28 ;显示底位
andi r30,$0f
ledl: ld r25,z
out portd,r25
sbi $18,7
cbi $18,6
ldi r27,$10
delay2: dec r26 ;延时
brne delay2
dec r27
brne delay2
sbi $18,6
nop
dec r20
brne start
rjmp main
inter: in r28,tcnt0 ;中断服务程序
clr r16 ;关闭T0
cli
out tccr0,r16
cbi portb,5
set
reti
conini: ldi r16,$0b
out acsr,r16
ldi r16,$02
out timsk,r16
cbi portb,5
ret
adconv: ldi r16,$40
out tcnt0,r16
clt
ldi r16,$02
out tccr0,r16
sbi portb,5
ret
fetch: mov r18,r28
swap r18
andi r18,$0f
dec r18
dec r18
dec r18
dec r18
brne l50
mov r18,r28
andi r18,$0f
rjmp fee
l50: dec r18
brne l60
mov r18,r28
andi r18,$0f
ori r18,$10
rjmp fee
l60: dec r18
brne l70
mov r18,r28
andi r18,$0f
ori r18,$20
rjmp fee
l70: dec r18
brne l80
mov r18,r28
andi r18,$0f
ori r18,$30
rjmp fee
l80: ldi r28,$ff
ret
fee: cbi eecr,0
out eear,r18
sbi eecr,0
in r28,eedr
ret
.eseg
.org $0000
.db 0x00,0x00,0x03,0x14,0x21,0x25,0x2f,0x33
.db 0x38,0x3f,0x47,0x52,0x59,0x6a,0x78,0x7d
.db 0x81,0x86,0x8b,0x90,0x9a,0x9f,0xa4,0xa7
.db 0xac,0xaf,0xbe,0xc5,0xc9,0xca,0xce,0xd0
.db 0xd3,0xd5,0xd7,0xd9,0xda,0xdf,0xe0,0xe1
.db 0xe2,0xe3,0xe4,0xe5,0xe6,0xe8,0xe9,0xec
.db 0xed,0xee,0xef,0xf0,0xf3,0xf4,0xf5,0xf6
.db 0xf8,0xf9,0xfa,0xfc,0xff,0xff,0xff,0xff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -