就是要看数据手册啊,从这里看起。
你要学 ADC 就看 ADC的章节吧。
点进去就可以看那个章节,然后跟着他的案例程序运行就可以了。
- <font size="3">/*
- 16.6 范例程序
- 16.6.1 ADC 基本操作(查询方式)
- C 语言代码
- */
- //测试工作频率为11.0592MHz
- #include "reg51.h"
- #include "intrins.h"
- sfr ADC_CONTR = 0xbc;
- sfr ADC_RES = 0xbd;
- sfr ADC_RESL = 0xbe;
- sfr ADCCFG = 0xde;
- sfr P_SW2 = 0xba;
- #define ADCTIM (*(unsigned char volatile xdata *)0xfea8)
- sfr P0M1 = 0x93;
- sfr P0M0 = 0x94;
- sfr P1M1 = 0x91;
- sfr P1M0 = 0x92;
- sfr P2M1 = 0x95;
- sfr P2M0 = 0x96;
- sfr P3M1 = 0xb1;
- sfr P3M0 = 0xb2;
- sfr P4M1 = 0xb3;
- sfr P4M0 = 0xb4;
- sfr P5M1 = 0xc9;
- sfr P5M0 = 0xca;
- void main()
- {
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0x00;
- P4M0 = 0x00;
- P4M1 = 0x00;
- P5M0 = 0x00;
- P5M1 = 0x00;
- P1M0 = 0x00; //设置P1.0 为ADC 口
- P1M1 = 0x01;
- P_SW2 |= 0x80;
- ADCTIM = 0x3f; //设置ADC 内部时序
- P_SW2 &= 0x7f;
- ADCCFG = 0x0f; //设置ADC 时钟为系统时钟/2/16
- ADC_CONTR = 0x80; //使能ADC 模块
- while (1)
- {
- ADC_CONTR |= 0x40; //启动AD 转换
- _nop_();
- _nop_();
- while (!(ADC_CONTR & 0x20)); //查询ADC 完成标志
- ADC_CONTR &= ~0x20; //清完成标志
- P2 = ADC_RES; //读取ADC 结果
- ADCCFG = 0x00; //设置结果左对齐
- ACC = ADC_RES; //A 存储ADC 的10 位结果的高8 位
- B = ADC_RESL; //B[7:6]存储ADC 的10 位结果的低2 位,B[5:0]为0
- // ADCCFG = 0x20; //设置结果右对齐
- // ACC = ADC_RES; //A[1:0]存储ADC 的10 位结果的高2 位,A[7:2]为0
- // B = ADC_RESL; //B 存储ADC 的10 位结果的低8 位
- }
- }
-
- </font>
复制代码
复制代码
|