; A/D转换子程序(AD_RUN) ; 输入: AD_CH-模式和通道选择命令字 ; 输出: AD_RESULTH,L ;12 bit的A/D转换值 ; 使用: R2 ;辅助工作寄存器 AD_RUN: CLR CS ; 芯片允许 CLR DCLK MOV R2,#8 ;先写8 bit命令字 MOV A,AD_CH AD_LOOP: MOV C, ACC.7 MOV DIN,C ;时钟上升沿锁存DIN SETB DCLK ;开始发送命令字 CLR DCLK ;时钟脉冲,一共24个 RL A DJNZ R2,AD_LOOP NOP NOP NOP NOP ADW0: JNB BUSY,AD_WAIT ;等待转换完成 SJMP ADW1 AD_WAIT: LCALL WATCHDOG NOP SJMP ADW0 CLR DIN ADW1: MOV R2,#12 ;开始读取12bit结果 SETB DCLK CLR DCLK AD_READ: SETB DCLK CLR DCLK ;用时钟的下降沿读取 MOV A,AD_RESULTL MOV C,DOUT RLC A MOV AD_RESULTL,A MOV A,AD_RESULTH RLC A MOV AD_RESULTH,A DJNZ R2,AD_READ MOV R2,#4 ;最后是没用的4个时钟 IGNORE: SETB DCLK CLR DCLK DJNZ R2,IGNORE SETB CS ;禁止芯片 ANL AD_RESULTH,#0FH ;屏蔽高4 bit RET 2.5 A/D转换结果的数据格式 ADS7843转换结果为二进制格式。需要说明的是,在进行公式计算时,参考电压在两种输入模式中是不一样的。而且,如果选取8位的转换精度,1LSB=VREF/256,一次转换完成时间可以提前4个时钟周期,此时串口时钟速率也可以提高一倍。 结束语 在许多嵌入式系统中,CPU提供专门的模块来支持液晶显示和触摸屏的输入,使得接口非常简单。比如,MOTOROLA的MC68VZ328(称为Dragon Ball)就提供专门的引脚来支持8位和4位的液晶显示,对触摸屏的支持通过SPI2借助ADS7843也很容易完成。 参考文献 1 MC68VZ328 Integrated Processor User's Manual 2 M68VZ328ADS Application Development System User's Manual. Revision 1.4. 2000 3 Burr-Brown IC Data Book |