[其它应用] SH79f085 ADC使用

[复制链接]
 楼主| ChenZengjie 发表于 2015-10-26 12:20 | 显示全部楼层 |阅读模式
  1. #include <sh79f085.h>

  2. #define SYSCLK   16600000L   /* 系统时钟频率 */
  3. #define ADC_CHAN 4           /* adc输入通道 */
  4. #define ADC_REF  7           /* adc参考电压, 0-7为内部参考电压, 8为外部参考电压 */
  5. #define ADC_CLK  100000L     /* adc时钟频率 */

  6. void serial_init(unsigned long bps)
  7. {
  8.     SCON = 0x40;
  9.     TCON &= 0x3f;
  10.     TMOD = 0x21;
  11.     PCON |= 0x80;
  12.     TH1 = -(SYSCLK/12/bps/16);
  13.     TR1 = 1;
  14. }

  15. void adc_init(void)
  16. {
  17.     ADCON &= 0x28;
  18.     ADCON |= ADC_CHAN & 0x07;
  19.     ADCON |= (ADC_REF << 1) & 0x10;
  20.     ADT = -(SYSCLK/2/ADC_CLK);
  21.     ADCH &= 0x10;
  22.     ADCH |= (1<<(ADC_CHAN&0x07)) & 0x07;
  23.     ADCH |= ADC_REF & 0x08;
  24.     ADCH |= (ADC_REF<<5) & 0xe0;
  25.     ADCON |= 0x80;
  26. }

  27. void adc_get(void)
  28. {
  29.     ADCON &= 0xbf;
  30.     while (!(ADCON & 0x40))
  31.         ;
  32.     SBUF = ADDH;
  33.     while (!TI)
  34.         ;
  35.     TI = 0;
  36.     SBUF = ADDM;
  37.     while (!TI)
  38.         ;
  39.     TI = 0;
  40.     SBUF = ADDL;
  41.     while (!TI)
  42.         ;
  43.     TI = 0;
  44. }

  45. void main(void)
  46. {
  47.     unsigned char i;

  48.     /*系统时钟16.6M, 不分频*/
  49.     CLKCON |= 0x08;
  50.     for (i = 0; i < 255; ++i)
  51.         ;
  52.     CLKCON |= 0x04;
  53.     CLKCON &= 0x9f;

  54.     serial_init(9600);
  55.     adc_init();

  56.     while (1)
  57.         adc_get();
  58. }


运行后在电脑上只看到串口发来
FF FF 0F B3 9C 05 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00 80 00 00
是adc哪块操作不对吗?
毁灭2012 发表于 2015-11-3 22:19 | 显示全部楼层
不好意思,看不懂这程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部