SRTP源代码与硬件框架图 粉尘检测仪
来源:互联网 发布:笔记本如何卸载软件 编辑:程序博客网 时间:2024/04/28 02:31
前面有些代码找不到了。。。
void Timer0Configuration(void); //设置定时器0
void Port_Init (void); // 端口初始化
void UART0_Init (void); // 串口通信初始化
void ADC0_Init (void); //ADC0寄存器初始化,输入为AIN0.0,输出为TX0和RX0
void PCA0_Init (void); //PCA0寄存器初始化,输出为CEX0,PWM
void Delay(int);
void Interrupts_Init(void); //中断设置
void main(void)
{
PCA0MD &= ~0x40; //关闭看门狗定时器
Oscillator_Init();
Timer0Configuration();
Port_Init();
UART0_Init();
ADC0_Init();
PCA0_Init();
Interrupts_Init();
ADC0MD = 0x83; //开始连续转换
EA=1; //中断开启
while(1)
{
if(Byte=='$')
TI0=1;
}
}
void IN_OUT_PUT() interrupt 4
{
if (RI0 == 1)
{
if( UART_Buffer_Size == 0) {
UART_Input_First = 0; }
RI0 = 0;
Byte = SBUF0;
if (UART_Buffer_Size < UART_BUFFERSIZE)
{
UART_Buffer[UART_Input_First] = Byte;
UART_Buffer_Size++;
UART_Input_First++;
}
}
if (TI0 == 1)
{
TI0 = 0;
if (UART_Buffer_Size != 0)
{
if ( UART_Buffer_Size == UART_Input_First ) {
UART_Output_First = 0; }
Byte = UART_Buffer[UART_Output_First];
if(UART_Buffer_Size==6)
{
Byte='$';
}
else if(UART_Buffer_Size==5)
{void Port_Init (void); // 端口初始化
void UART0_Init (void); // 串口通信初始化
void ADC0_Init (void); //ADC0寄存器初始化,输入为AIN0.0,输出为TX0和RX0
void PCA0_Init (void); //PCA0寄存器初始化,输出为CEX0,PWM
void Delay(int);
void Interrupts_Init(void); //中断设置
void main(void)
{
PCA0MD &= ~0x40; //关闭看门狗定时器
Oscillator_Init();
Timer0Configuration();
Port_Init();
UART0_Init();
ADC0_Init();
PCA0_Init();
Interrupts_Init();
ADC0MD = 0x83; //开始连续转换
EA=1; //中断开启
while(1)
{
if(Byte=='$')
TI0=1;
}
}
void IN_OUT_PUT() interrupt 4
{
if (RI0 == 1)
{
if( UART_Buffer_Size == 0) {
UART_Input_First = 0; }
RI0 = 0;
Byte = SBUF0;
if (UART_Buffer_Size < UART_BUFFERSIZE)
{
UART_Buffer[UART_Input_First] = Byte;
UART_Buffer_Size++;
UART_Input_First++;
}
}
if (TI0 == 1)
{
TI0 = 0;
if (UART_Buffer_Size != 0)
{
if ( UART_Buffer_Size == UART_Input_First ) {
UART_Output_First = 0; }
Byte = UART_Buffer[UART_Output_First];
if(UART_Buffer_Size==6)
{
Byte='$';
}
else if(UART_Buffer_Size==5)
Byte=mV/1000+48;
}
else if(UART_Buffer_Size==4)
{
Byte=(mV/100)%10+48;
}
else if(UART_Buffer_Size==3)
{
Byte=(mV/10)%10+48;
}
else if(UART_Buffer_Size==2)
{
Byte=mV%10+48;
}
SBUF0 = Byte;
UART_Output_First++;
UART_Buffer_Size--;
}
}
}
void ADC0_ISR (void) interrupt 10
{
while(!AD0INT); // Wait till conversion complete
AD0INT = 0; // Clear ADC0 conversion complete flag
// Copy the output value of the ADC
rawValue.Byte[Byte3] = 0x00;
rawValue.Byte[Byte2] = (unsigned char)ADC0H;
rawValue.Byte[Byte1] = (unsigned char)ADC0M;
rawValue.Byte[Byte0] = (unsigned char)ADC0L;
mV = rawValue.result / 34;
}
void Oscillator_Init ()
{
OSCICN = 0x83; // 使内部可编程振荡器频率最低,禁止分频
CLKSEL = 0x00; // 选择内部振荡器
RSTSRC = 0x04; // RSTSRC中的PORSF位=1,使用VDD监视器作为复位源
}
void Timer0Configuration()
{
TH0 = 0xEC;
TL0 = 0x0F; //60431
TMOD = 0x01; // 选择16位定时模式(方式1)
CKCON = 0x02; // 选择使用分频时钟 = 系统时钟 / 48 = 510417Hz
//65535 + 1 - 60431 = 5105
//5105 * 1 / 510417 = 10 (ms)
ET0 = 1; // 允许TF0标志位的中断请求
TCON = 0x10; // 打开定时器0
}
void Port_Init ()
{
XBR0 = 0x01; // UART TX0, RX0 连到端口 P0.4(引脚17) 和 P0.5(引脚18)
XBR1 = 0x41; // 交叉开关使能,弱上拉使能,CEX0连到端口P0.0(引脚13)
P0MDOUT |= 0x11; // TX0 (P0.4)和CEX0(P0.0)为推挽方式 ,推挽方式可以产生高低电平,RX(P0.5)为漏极开路
//或为0xD1
}
void UART0_Init ()
{
SCON0 = 0x10; //选择8位波特率可编程uart
if (SYSCLK/BAUDRATE/2/256 < 1) {
TH1 = 256-(SYSCLK/BAUDRATE/2);
CKCON &= ~0x0B;
CKCON |= 0x08; // T1M = 1; SCA1:0 = xx
}
else if (SYSCLK/BAUDRATE/2/256 < 4) {
TH1 = 256-(SYSCLK/BAUDRATE/2/4);
CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 01
CKCON |= 0x01;
}
else if (SYSCLK/BAUDRATE/2/256 < 12) {
TH1 = 256-(SYSCLK/BAUDRATE/2/12);
CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 00
}
else if (SYSCLK/BAUDRATE/2/256 < 48) {
TH1 = 256-(SYSCLK/BAUDRATE/2/48);
CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 10
CKCON |= 0x02;
}
else {
while (1); // Error. Unsupported baud rate
}
TL1 = TH1; // Init Timer1
TMOD &= ~0xf0; // TMOD: timer1 8位自动重装
TMOD |= 0x20;
TR1 = 1; // 启动 Timer1
RI0 =0;
IP |= 0x10;
ES0 = 1;
}
void ADC0_Init ()
{
ADC0CN = 0x00;
ADC0MD = 0x80;
ADC0CLK = 0x09;
ADC0DECL = 0x79; //????
ADC0MUX = 0x08;
}
void PCA0_Init ()
{
PCA0CN = 0x40;
PCA0MD &= ~0x40;
PCA0MD = 0x08;
PCA0CPM0 = 0xC2;
PCA0CPL0 = 0xCE;
PCA0CPH0 = 0xF7;
}
void Interrupts_Init()
{
IP = 0x10;
EIE1 = 0x08;
IE = 0x10;
}
void Delay(int i) // 延迟函数
{
int j;
for(j=0; j<i; j++);
}
0 0
- SRTP源代码与硬件框架图 粉尘检测仪
- SRTP
- SRTP
- srtp
- 检测硬件的插入与拔除
- 硬件检测与硬件信息的获取C/C++——序
- 检测Linux硬件状态
- 检测Linux硬件状态
- 硬件检测方面
- 检测硬件信息
- 硬件检测:安装、停用
- 检测 Linux 硬件状态
- ipod 硬件检测
- kudzu Centos 检测硬件
- VB检测硬件信息
- 硬件检测:安装、停用
- 硬件检测:安装、停用
- linux kudzu检测硬件
- Yarn的资源调度与erlang进程调度二三事
- 共阴和共阳数码管编码表
- json
- 钢琴曲
- ListView上拉加载更多
- SRTP源代码与硬件框架图 粉尘检测仪
- Mavlink协议理解Pixhawk APM(二)
- CButtonST的使用
- 在ubuntu14.10上安装jdk
- 小记--
- UVALive - 2191 Potentiometers 线段树点修改
- 给所有的窗口添加边框、背景
- 28-语言入门-28-1的个数
- Ubuntu12.04/14.04下安装搜狗输入法