导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→给您一个程序,是8位ADC,但转换时间比较长。

* 55567: 您进来看看,替换AT89C51,S51,C52,S52;W78E58B,516B的产品。

   Lichunfu 
Lichunfu发表的帖子 

 给您一个程序,是8位ADC,但转换时间比较长。
;================== I/O定义 =======================
AD_CON  BIT  P3.7  ;ADC充、放电控制
Key  BIT  P3.2  ;按键

ADC  BIT  P3.6  ;ADC输入

;================= RAM定义 ======================
TL0Back DATA  1DH
TH0Back DATA  1EH  ;定时/计数器基数备份
WF0  DATA  20H  ;工作标志
F_Xms  BIT  WF0.0  ;软件定时器溢出标志
SendEN  BIT  WF0.1  ;发射允许

;================= 常数定义 ======================
STACK  EQU  30H  ;30H-3FH:共16字节堆栈
PAULSL  EQU  9AH
PAULSH  EQU  0F9H  ;1.638毫秒定时器
DELAY50L EQU  0B0H
DELAY50H EQU  3CH  ;50毫秒定时器
TXFREQ  EQU  0E6H  ;发射频率38.4KHz(12.00MHz晶体)
TXMODE  EQU  22H  ;发射时工作于自动重装载模式(模式2)
TMMODE  EQU  21H  ;定时时工作于16位计数器模式(模式1)
INITWF0 EQU  00H
Baud  EQU  0E6H  ;Baud Rate =1200BPS(osc=12.00MHz)
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
;
;    主程序开始
;
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 

 ORG 0000H
 AJMP MainProg

 ORG 000BH
 AJMP TM0INTServe

 ORG 001BH
MainProg:
 MOV IE, #00H
 MOV SP, #STACK
 CLR TR0
 CALL INITSystem
 SETB TR1
 SETB EA
 SETB ET0
 SETB Key
StartWork:
 SETB Key
 JB Key, StartWork
 MOV A, #1    ;****
 CALL Delay_50ms
 JB Key,StartWork   ;****
 CALL ADCProg
 MOV SBUF, A   ;****
 JNB TI, $
 CLR TI
 JNB Key, $
 AJMP StartWork
;=========================================================
;系统初始化
INITSystem:
 MOV WF0, #INITWF0
 MOV TMOD, #TXMODE
 MOV TH1, #Baud
 MOV TL1, #Baud
 MOV SCON, #40H
 RET
;=========================================================
;AD转换程序
ADCProg:
 SETB ADC
 MOV R6, #2
 MOV R7, #0
AD_Start:
 MOV R5, #0
AD_Loop:
 JB ADC, HighLevel
 CLR AD_CON
 DEC R5
 AJMP AD_Count
HighLevel:
 SETB AD_CON
 NOP
 NOP
 NOP
 NOP
AD_Count:
 CALL Delay_10us
 DJNZ R7, AD_Loop
 DJNZ R6, AD_Start
 MOV A, R5
 SETB AD_CON
 RET
;=========================================================
;10us延迟
Delay_10us:
 MOV R4, #5
 DJNZ R4, $
 RET
;=========================================================
;秒级延迟程序(分辨率=0.05s)
Delay_50ms:
 MOV TMOD, #TMMODE
 CLR SendEN
 CLR F_Xms
Delay50P0:
 MOV TL0, #DELAY50L
 MOV TH0, #DELAY50H
 SETB TR0
Delay50P1:
 ORL PCON, #01H   ;IDL(PCON.0)=1,进入睡眠模式
 JNB F_Xms, Delay50P1
 CLR TR0
 CLR F_Xms
 DEC A
 JNZ Delay50P0
 RET
;=========================================================
;定时器0中断服务程序
TM0INTServe:
 SETB F_Xms
 RETI


发表时间:2004年5月28日16:18:07

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  87872.[详细]自制编程器设想
摘要:利用89S51的在线编程功能,替换下89C5x监控芯片,制作一个简易ISP下载线烧入下位机程序,就可以制作成啦~!可以解决自制编程器需要先烧写监控芯片的麻烦了吧,不知此方案怎么没有大侠研究呢?......(179字)
- [mufan700][2633次] 2006年1月10日

[上一篇帖子]:可编程逻辑芯片技术请问普通的gal20v8用什么环境进行设计,设计完后有怎么编程!谢谢!!!
[下一篇帖子]:不同厂家的产品。。。不同厂家、不同型号不同共极性的产品封装差异很大,别人给你你也不敢用。你可以直接找