📄 新建 文本文档 (3).txt
字号:
源程序:1.由电路图可以知道:ADC0809的地址是70FFh
2.ADC0809的8个模拟通道所对应的口地址是78FFh~7FFFh
3.采样的开始,只要对模拟通道对应的地址写入一个数即启动转换。
4.由P1.0查询ADC0809的EOC信号,即可确定转换是否完成
5.8个通道的转换结果依次放入20h~27h存储单元中
org 0000h
ljmp mainini
org 0003h
ljmp ex0_handler
org 0013h
ljmp t0_handler
org 40h
ex0_handler:
clr ea ;关中断
mov p0,#0ffh ;读结果。由于p0口复用,需先把P0口置为输入方式
mov a,p0
mov @r1,a ;存结果
inc dph ;下一通道
cjne dph,#08h,continue
mov dph,#00h
mov r1,#00h
continue:
inc r1
mov p0,dph
setb p2.7 ;启动下一通道转换
nop
nop
nop
clr p2.7
setr int0
setb ea ;开中断
reti
to_handler:
clr ea
clr tf0 ;定时器溢出中断位置零
mov tl0,#0h ;定时器初值重置
mov th0,#0b8h
setb ea
reti
mainini:
clr it0 ;int0为电平触发
mov tl0,#0h ;
mov th0,#0b8h ;设定计数器初值
;mov tmod,#21h ;定时器0为工作方式1(16位定时器),定时器1位工作方 式2(波特率发生器)
Setb pt0 ;设置定时器0为最高优先级中断
Setbt r0 ;启动定时器0
;初始化AD转换器
mov p0,#00h
clr p2.7
set p2.7
nop
nop
nop
clr p2.7
;中断使能
setb ex0 ;允许外中断0
setb et0 ;允许定时器0溢出中断
setb es ;允许串行中断
setb ea ;开总中断控制位
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -