STC12C5A60S2 内部ADC转换串口显示程序

  • 格式:doc
  • 大小:20.00 KB
  • 文档页数:3

STC12C5A60S2 内部ADC转换串口显示程序(已经验证成功)
#include <stc12c5a60s2.h>
#include "intrins.h"
typedef unsigned char uchar;
typedef unsigned int uint;
/************* 设置ADC_CONTRL 控制寄存器*************/
#define ADC_POWER 0x80 // ADC电源控制为0:关闭AD转换电源1:打开AD转换电源
#define ADC_FLAG 0x10 // ADC转换结束标志位,AD转换后自动置1,
for(c=142;c>0;c--)
for(b=168;b>0;b--)
for(a=250;a>0;a--);
for(n=2;n>0;n--);
_nop_(); //if Keil,require use intrins.h
}
//************************ 串口通信部分******************************
uchar wj_uun = '!'; // 用于存放串口1接收的字符
void bt_uart_init(void) // 单片机串口初始化
{
//SCON=0X50; // SM0=0 SM1=1 SM2=0 REN=1
SM0 = 0; // 串口工作方式1:1位起始位,8位数据位,1位停止位允许串口接收
SM1 = 1;
REN = 1; // 允许串口接收
//RI=1; // 接收标志位,0:正在接收1:接收完毕(如果RI=1就一直执行串口中断) TMOD = 0X20; // 定时器T1工作方式2
TH1 = 0XFD; // 9600bit/s下的定时器初值
TL1 = 0XFD;
TR1 = 1; // 启动定时器T1
EADC = 1; // 允许ADC中断
}
//***************** 主函数*****************
void main()
{
P4SW = 0x70; // P4端口的4、5、6脚可作为通用I/O口
bt_uart_init(); // 串口初始化
ADC_Init(); // ADC初始化
while(1) {
;
}
}
//***************** ADC中断函数*****************
void ADC_(void) interrupt 5 // ADC中断编号为5
{
uint adc_result = 0;
// while(!(ADC_CONTR & ADC_FLAG)); // 如果未转换结束,等待ADC_CONTR寄存器ADC_FLAG位置1
// ADC_CONTR &= ~ADC_FLAG; // 清零ADC转换结束标志位(这句可以不写,因为下面有覆盖)
}
}。