📄 main.c
字号:
#include <c8051f320.h>
//#include <INTERRUPT_ISR.c>
void Sysclk_Init();
void ADC_Init();
sfr EIP1 = 0XF6;
#define SYSCLK_EXT 24000000
#define BAUDRATE 9600
int zt_speed_gps=32;
sbit led=P1^6;
sbit mc=P0^1;
unsigned char zt_times[1];
unsigned char gps_time[1];
unsigned long zt_speed=0;
extern int n;
extern bit tx_flag;
extern unsigned char sci_tx[30];
extern unsigned char sci_rx[26];
extern bit tx;
extern bit rx_out;
extern bit sd_js;
extern char status;
extern int p;
void Sysclk_Init(void)
{
int x;
OSCXCN =0x67;
P0MDIN &=0xF3;
P0SKIP |=0x0C;
XBR0 |=0x08;
for(x = 0;x < 5000;x)
x++;
while(!(OSCXCN & 0x80));
CLKSEL = 0X01;
OSCICN = 0X00;
CLKMUL = 0x00;
VDM0CN &= 0X40;
}
void Port_Init(void)
{
P0MDIN |= 0X03;
P0MDOUT |= 0xFF;
P1MDIN &= 0XFE;
P1MDOUT |= 0XFF;
P2MDIN = 0XFF;
P2MDOUT = 0XFF;
P0SKIP |= 0X0C;
P1SKIP = 0X01;
P2SKIP = 0X00;
XBR0 = 0X01;
XBR1 |= 0XD0;
}
void Time0_Init(void)
{
TCON |= 0X00;
TMOD = 0x05; CKCON |= 0x02;
ET0 = 1; TR0 = 0;
IT01CF |= 0X67;
}
void Time2_Init(void)
{
TMR2CN = 0X00;
TMR2CN |= 0X00;
TR2 = 0;
ET2 = 1;
}
void ADC_Init(void)
{
REF0CN = 0x0E;
AMX0P = 0X00;
AMX0N = 0X1F;
ADC0CF = (SYSCLK_EXT/1000000) << 3;
ADC0CF |= 0XC2;
ADC0CN |= 0X80;
EIP1 |= 0X08;
EIE1 |= 0X08;
}
void Timer3_Init(void)
{
TMR3CN = 0X00;
TMR3RLL = 250; TMR3RLH = 17;
EIP1 |= 0X80; EIE1 |= 0X80; TMR3CN |= 0X04;
}
void UART0_Init(void)
{
SCON0 = 0x10;
TH1 = -(SYSCLK_EXT/BAUDRATE/2/48);
CKCON &= ~0X0B;
CKCON |= 0X02;
TI0 = 0;
ES0 = 1;
}
void Timer1_Init (void)
{
TL1 = TH1; TMOD &= ~0Xf0; TMOD |= 0X20;
TR1 = 1;
}
void main(void)
{
unsigned long temp=0;
PCA0MD = 0x00;
Sysclk_Init();
Port_Init();
Time0_Init();
Time2_Init();
UART0_Init();
Timer1_Init();
ADC_Init();
Timer3_Init();
TR0 = 1;
led=1;
EA = 1;
mc=0;
while(1)
{
while(sd_js)
{
sd_js=0;
zt_speed = 0;
zt_speed=zt_speed_gps*36;
zt_speed=zt_speed*p;
zt_speed=zt_speed/1000;
sci_tx[6]=zt_speed/256;
sci_tx[7]=zt_speed%256;
zt_speed=1000000*40/zt_speed_gps/p;
zt_times[0]=-zt_speed%256;
zt_times[1]=-zt_speed/256;
switch(status)
{
case 1:
TMR2RLL =zt_times[0];
TMR2RLH =zt_times[1];
TR2=1;
break;
case 2:
TMR2RLL=gps_time[0];
TMR2RLH=gps_time[1];
TR2=1;
break;
case 3:
TMR2RLL=gps_time[0];
TMR2RLH=gps_time[1];
TR2=1;
break;
case 0:
TR2=0;
break;
}
}
while(rx_out)
{
rx_out=0;
sci_tx[10]=sci_rx[1];
sci_tx[11]=sci_rx[2];
sci_tx[12]=sci_rx[3];
sci_tx[13]=sci_rx[4];
sci_tx[14]=sci_rx[5];
sci_tx[15]=sci_rx[6];
sci_tx[16]=sci_rx[7];
sci_tx[17]=sci_rx[8];
temp=sci_rx[11]*128+sci_rx[12];
sci_tx[18]=sci_rx[11];
sci_tx[19]=sci_rx[12];
sci_tx[20]=sci_rx[16];
sci_tx[21]=sci_rx[19];
sci_tx[22]=sci_rx[20];
sci_tx[23]=sci_rx[21];
sci_tx[24]=sci_rx[22];
sci_tx[25]=sci_rx[23];
sci_tx[26]=sci_rx[24];
if(temp<=20)
{
gps_time[0] = 0;
gps_time[1] = 0;
status &= 0x01;
}
else
{
temp=temp*50/36;
temp=2000000/temp;
gps_time[0]=-temp%256;
gps_time[1]=-temp/256;
status|=0X02;
if(sci_rx[16]>=3) status|=0X02;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -