AD_DAT EQU P1.2
AD_CLK EQU P1.3
AD_CS EQU P1.4
DISSTART EQU 30H ;显示单元首地址
ORG 0030H
MAIN:
START: MOV 20H,#00H
MOV P1,#0FFH
SETB AD_CS
CLR AD_CLK
SETB AD_DAT
_READ:MOV R0,#08H ;ADC0832初始化
SETB AD_CS ;一个转换周期开始
CLR AD_CLK
NOP
NOP
CLR AD_CS
NOP ;CS置0,片选有效
SETB AD_DAT ;DI置1,起始位
SETB AD_CLK
NOP
NOP ;第一个脉冲
CLR AD_DAT ;在负跳变之前加一个DI反转操作
CLR AD_CLK
SETB AD_DAT;DI置1,设为单通道
NOP
NOP
SETB AD_CLK ;第二个脉冲
NOP
NOP
CLR AD_DAT ;***
CLR AD_CLK ;
CLR AD_DAT ;DI置0,选择通道0
NOP
NOP
SETB AD_CLK ;第三个脉冲
SETB AD_DAT ;***
CLR AD_CLK
_READ_LOOP:
SETB AD_CLK
CLR AD_CLK
CLR C
JNB AD_DAT, _RL_RL
SETB C
_RL_RL:
RLC A
DJNZ R0, _READ_LOOP
MOV 20H,A
MOV R0,#0AH
_READ_LOOP1:
SETB AD_CLK
CLR AD_CLK
DJNZ R0, _READ_LOOP1
SETB AD_CS
CLR AD_CLK
AD_CHULI:
MOV A,20H
MOV B,#51
DIV AB
MOV DISSTART+2,A
MOV A,B ;余数大于1AH.FO为0。乘法溢出。结果加5
CLR F0
SUBB A,#1AH ;相减不够。C=1表示余数小于1 AH(26)
MOV F0,C
MOV A ,#10
MUL AB ;余数乘以1O。相当于补0,继续除。
MOV B,#51
DIV AB ;再除以51
JB F0,TBCD1
ADD A,#5
TBCD1:
MOV DISSTART+1,A ;小数后第一位放入DISSTART+1
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,TBCD2
ADD A,#5
TBCD2:
MOV DISSTART,A ;小数后第二位放入DISSTART
ADPLAY:
MOV SCON,#00H ;查询方式发送数据
MOV R0,#DISSTART
MOV R1,#03H
LOOP:
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
A1: JBC TI,CONT
SJMP A1
CONT:
INC R0
CLR TI
DJNZ R1,LOOP
DELAY0: MOV R6,#10
DEL2: MOV R7,#50
DEL3: DJNZ R7,DEL3
DJNZ R6,DEL2
LJMP MAIN
TAB: DB 01H, 0E7H, 32H, 0A2H,0E4H
DB 0A8H, 28H, 0E3H, 20H, 0A0H
END
不好意思啊 图我没传上来 http://hi.baidu.com/%B5%E7%D7%D3%B0%AE%BA%C3%D5%DF%D1%BE%D1%BE/blog/item/0cc0162227839f4cad34de1b.html 就是这里这个图
文章评论(0条评论)
登录后参与讨论