;等待转换结束 SETB ADCS NOP NOP NOP NOP CLR ADCS ;取高2位 NOP NOP NOP NOP
SETB ADDout SETB ADClk MOV C,ADDout MOV ACC.1,C CLR ADClk NOP NOP NOP NOP
SETB ADDout SETB ADClk MOV C,ADDout MOV ACC.0,C CLR ADClk
ANL A,#00000011B ;清A的高6位 MOV R0,A ;保存数据
MOV R7,#8
25
C_L3: NOP NOP NOP NOP
SETB ADDout SETB ADClk MOV C,ADDout MOV ACC.0,C RLC A CLR ADClk DJNZ R7,C_L3 SETB ADCS MOV R1,A RET
2).驱动程序的使用
该驱动程序中用到了四个标记符号:
ADClk 与TLC1543的Clk引脚相连的单片机引脚 ADaddr 与TLC1543的Address引脚相连的单片机引脚 ADDout 与TLC1543的AdDout引脚相连的单片机引脚 ADCS 与TLC1543的 引脚相连的单片机引脚
实际使用时,根据接线的情况定义好ADclk、ADaddr、ADDout、ADCS,将通道号送入R2,调用ADConver,即可从R0、R1中得到转换后的数据,使用非常简单。 ;************************************************** ; ;
;文件名:ad.asm
;功能简介:每隔1s轮流将一个通道的值显示在数码管后4位,首位显示通道号 ;**************************************************
26
gCoun DATA 22H ;通道计数器 CLK bit P1.1 ;时钟端 ADDR bit P1.0 ;地址端 Dout bit P1.4 ;数据输出端 CS bit P1.3 ;片选端 Hidden DATA 10H ;消隐码
Counter DATA 57H ;显示程序用计数器 DISPBUF DATA 58H ;显示缓冲区首地址
ORG 0000H JMP START
ORG 000BH ;定时中断使用T0 JMP DISP ;定时中断程序 ORG 30H START:
MOV SP,#5FH ;初始化 MOV P1,#0FFH MOV P0,#0FFH
MOV P2,#0FFH ;关所有LED及数码管 MOV TMOD,#00000001B MOV TH0,#HIGH(65536-3000) MOV TL0,#LOW(65536-3000) SETB TR0 SETB EA SETB ET0
MOV Counter,#0 ;计数器清零
MOV DISPBUF+1,#Hidden ;第2位显示器消隐 MOV gCoun,#0 ;通道计数器清零,指向通道0 LOOP:
CALL Delay ;延时1s
27
MOV R2,gCoun ;送通道号 CALL ADConver MOV A,R0 MOV R6,A MOV A,R1 MOV R7,A CALL HB2
;调用二-十进制转换程序
;入口:待转换的双字节十六进制数在R6和R7中
;出口:转换结束的结果在R3、R4和R5中,压缩BCD码方式存储 MOV A,R4 ANL A,#0F0H
SWAP A ;高低4位互换 MOV DispBuf+2,A ;最高位 MOV A,R4 ANL A,#0FH MOV DispBuf+3,A MOV A,R5 ANL A,#0F0H SWAP A
MOV DispBuf+4,A MOV A,R5 ANL A,#0FH MOV DispBuf+5,A
;以上程序段将压缩BCD码转换成非压缩BCD码并送显示缓冲区 MOV DispBuf,gCoun ;将通道号送第1个显示器的显示缓冲区 INC gCoun ;通道号加1 MOV A,gCoun
CJNE A,#11,LOOP ;判断是否到11了 MOV gCoun,#0 ;到则回零
28
JMP LOOP ;主程序到此结束
29