|
|
wulin 發(fā)表于 2024-1-11 22:12
#include "STC8G.h"
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
#define FOSC 1105920L //系統(tǒng)頻率
#define BAUD 11520 //串口波特率
uint ADC1_DATA;
uchar ADC1_H;
uchar ADC1_L;
void Delay1us() //@11.0592MHz
{
unsigned char i;
i = 3;
while (--i);
}
void Delay100ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 6;
j = 157;
k = 59;
do
{
do
{
while (--k);
}
while (--j);
} while (--i);
}
/*
void Timer0Init() //1毫秒@11.0592MHz
{
AUXR |= 0x80; //定時器時鐘1T模式
TMOD &= 0xF0; //設置定時器模式
TL0 = 0xCD; //設置定時初值
TH0 = 0xD4; //設置定時初值
ET0 = 1; //開啟定時器0
TR0 = 1; //定時器0開始計時
}*/
void UartInit() //可變波特率設置 115200bps@11.0592MHz
{
SCON = 0x50; //8位可變波特率
AUXR |= 0x14; //T2為1T模式
T2L = (65536 - (FOSC/4/BAUD)); //設置波特率重裝值
T2H = (65536 - (FOSC/4/BAUD))>>8;
// ES=1;
// EA=1;
}
/*
void time0() interrupt 1
{
TL0 = 0xCD; //設置定時初值
TH0 = 0xD4; //設置定時初值
}*/
void send_byte(uchar by)
{
SBUF = by;
while (!TI);
TI = 0;
}
void main()
{
P3M0=0x00; P3M1=0x04;//設置P32為ADC口,高阻輸入模式
P5M0=0x00; P5M1=0x00;
// Timer0Init();
UartInit();
P_SW2 |=0x80;
ADCTIM=0x3f; //設置ADC內(nèi)部時序
P_SW2 &=0x7f;
ADCCFG=0x2f; //右對齊,設置ADC時間系總統(tǒng)時間/2/16/16 和數(shù)據(jù)輸出格式
ADC_CONTR=0x82; //使能 ADC 模塊
Delay100ms(); //等待系統(tǒng)穩(wěn)定
while(1)
{
ADC_CONTR |=0x42;//啟動AD交換 后4位表示采集的通道 ADC0口
Delay1us();
while(!(ADC_CONTR&0x20));//查詢ADC完成標志
ADC_CONTR &=~0x20;//清完成標志
ADC1_H=ADC_RES;
ADC1_L=ADC_RESL;
ADC1_DATA=ADC1_H*256 + ADC1_L;
send_byte(ADC1_DATA/1000 + 0x30);
send_byte(ADC1_DATA%1000/100 + 0x30);
send_byte(ADC1_DATA%100/10 + 0x30);
send_byte(ADC1_DATA%10 + 0x30);
send_byte(0x0a);
Delay100ms();
Delay100ms();
Delay100ms();
}
}
//單片機為STC8G1K08A-8PIN的,ADC采集P32 就是不能發(fā)送什么原因?
|
|