📄 stc12c5412adadc&uart.c
字号:
#include "STC12C5410AD.h"
#define uchar unsigned char //single byte
#define uint unsigned int //double byte
void delay ( uint ms ) //1ms延时程序
{
uint i;
for(; ms > 0; ms-- )
for( i = 0; i < 1010; i++ );
}
void adc_init(void)
{
P1M0 =0xe0; /*p1.7,p1.6,p1.5开漏,做AD使用*/
P1M1 =0xe0; /*p1.7,p1.6,p1.5开漏,做AD使用*/
ADC_CONTR =0xc0; //启动A/D,540个CLK实现AD转换
delay(2);
}
void uart_init(void)
{ SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
PCON = 0;
TMOD = 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TL1 = 244;
TH1 = 244; /* TH1: reload value for 2400 baud @ 11.0592MHz */
TR1 = 1; /* TR1: timer 1 run */
}
void putch(uchar senddata)
{
/* output one byte */
SBUF = senddata;
while(!TI)
continue;
TI=0;
}
void main (void)
{
adc_init( );
uart_init( );
while (1)
{
ADC_CONTR = ADC_CONTR | 0x07; //设置P1.7通道进行AD转换 //
delay(1);
ADC_CONTR = ADC_CONTR | 0x08; //启动AD转换
while ( (0x10 & ADC_CONTR) != 0x10 )
continue;
putch(ADC_DATA);
putch(ADC_LOW2);
ADC_CONTR = 0xc6; //清零ADC_FLAG标志位,设置P1.6通道进行AD转换
delay(1);
ADC_CONTR = ADC_CONTR | 0x08; //启动AD转换
while ( (0x10 & ADC_CONTR) != 0x10 )
continue;
putch(ADC_DATA);
putch(ADC_LOW2);
ADC_CONTR = 0xc5; //清零ADC_FLAG标志位,设置P1.5通道进行AD转换
delay(1);
ADC_CONTR = ADC_CONTR | 0x08; //启动AD转换
while ( (0x10 & ADC_CONTR) != 0x10 )
continue;
putch(ADC_DATA);
putch(ADC_LOW2);
ADC_CONTR = 0xc0; //清零ADC_FLAG标志位
delay(100);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -