|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2010-3-9 11:18:30
|
显示全部楼层
![](http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_537368.JPG)
(原文件名:未命名.JPG)
;*********************************************
;ADC0804端口定义
;*********************************************
cs0804 equ p3.6;定义AD的片选信号线
wr0804 equ p3.5
rd0804 equ p3.7
out0804 equ p1;定义AD转换后的数字信号送P1口
ge_bit equ 30h
shi_bit equ 31h
bai_bit equ 32h
org 0000h
ajmp main
org 0004h
main:
lcall Start;调启动转换子程序
lcall delay1ms;延时约1ms
lcall read;调读取转换结果子程序
clr wr0804;清除转换结果?
mov r4,a
mov b,#100;求转换结果百位
div ab;
mov bai_bit,a
mov a,b
mov b,#10;求转换结果十、个位
div ab
mov shi_bit,a
mov ge_bit,b;
lcall Display
ajmp main
Display:
setb p2.2
mov DPTR,#disptab
mov a,ge_bit
movc a,@a+dptr
mov p0,a
clr p2.0
call delay1ms
setb p2.0
mov DPTR,#disptab
mov a,shi_bit
movc a,@a+dptr
mov p0,a
clr p2.1
call delay1ms
setb p2.1
mov DPTR,#disptab
mov a,bai_bit
movc a,@a+dptr
mov p0,a
clr p2.2
call delay1ms
ret
;*********************************************
;A/D转换开始
;*********************************************
Start:
clr cs0804;选中ADC0804
nop
clr wr0804
nop
setb wr0804
nop
setb cs0804
nop
ret
;*********************************************
;读A/D 转换结果
;*********************************************
Read:
mov out0804,#0ffh
clr cs0804
nop
clr rd0804
nop
nop
mov a,out0804;
nop
setb rd0804
nop
setb cs0804
ret
;*********************************************
; 延时1ms子程序
;*********************************************
delay1ms:
mov r1,#2
tt1:
mov r0,#250
djnz r0,$
djnz r1,tt1
ret
disptab:
db 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;字形代码表
;0 1 2 3 4 5 6 7 8 9
end
能否帮我看下这个程序,和他对应的图。他怎么是这样定义的,他第5脚INTR只有当转换完后,才有硬件置1,怎么他有I/O口控制高低呢?还有其他的RD、WR定义怎么看着有问题一样。 |
|