📄 newboy.c
字号:
#include "EM78x447xx.h"
#define Byte unsigned int
#define Word unsigned short
#define DWord unsigned long
#define Data_pin R50
#define Clock_pin R51
#define Start_stop_key R70
#define Speed_up_key R71
#define Speed_down_key R72
#define Speed_3km_key R73
#define Speed_6km_key R74
#define beeper_pin R53
#define trans_pin R52
#define receive_pin R75
#define safe_key R77
#define ENI() _asm{ENI}
#define DISI() _asm{DISI}
#define _nop() _asm{nop}
#define WDTC() _asm{wdtc}
Word speed;
Word distance;
Byte second,ten_second,minute,ten_minute;
Byte count_num,h,k,display_on;
Byte bee_num,beeper_time,be_nud;
Byte three_dao_ji;
Byte key_scan_ss,key_scan_safe;
Byte key_scan_up,key_scan_down,key_scan_three,key_scan_six,key_scan_zero;
Byte realistic_shi_fen,realistic_fen,realistic_shi_miao,realistic_miao;
Byte realistic_tenkilometer,realistic_kilometer,realistic_hundredmeter;
Byte realistic_shi_wei,realistic_ge_wei,realistic_fen_wei;
bit on_off;
bit power_on;
bit bee_flag;
bit start_time;
bit dao_ji_shi;
bit t_zero;
bit former_second;
bit trans_flag;
Byte trans_time;
Byte trans_num;
Word former_speed;
Byte test_number_no_dot[13]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xD8,0x80,0x90,0xBF,0xFF,0x86};
void System_Setup(void)
{
_asm
{
mov a,@0x87
contw
}
IMR=0X01;
WDTCR&=0xbf; //P66 and P77 Disable open-drain,Disable WDT
P5CR=0; //Port5 is output
P6CR=0; //Port6 is output
P7CR=0xff; //P0~3 is input,P4~7 is input
PORT5=0xff;
PORT6=0xff;
TCC=0;
count_num=91;
}
void clean_display(void)
{
speed=0;
distance=0;
second=0;
ten_second=0;
minute=0;
ten_minute=0;
}
void delayms(Word n)
{
Word i;
for(i=0;i<n;i++)
{
_nop();
}
}
void time_count(void)
{
if(second==10)
{
ten_second=ten_second+1;
second=0;
if(ten_second==6)
{
minute++;
ten_second=0;
if(minute==10)
{
ten_minute++;
minute=0;
}
}
}
}
void bee_sound_scan(void)
{
if(bee_num!=0)
{
if(bee_flag==1)
{
beeper_pin=0;
beeper_time++;
if(beeper_time==120)
{
beeper_time=0;
bee_flag=0;
bee_num--;
}
}
if(bee_flag==0)
{
beeper_pin=1;
beeper_time++;
if(beeper_time==120)
{
beeper_time=0;
bee_flag=1;
}
}
}
else{bee_flag=0;}
}
void led_write_eight(Byte num_eight)
{
Byte write_number,cou,i;
write_number=num_eight;
cou=8;
for(i=0;i<cou;i++)
{
Clock_pin=0;
write_number<<=1;
Data_pin=C;
Clock_pin=1;
}
}
void time_speed_distance_displayer_count(void)
{
Byte show_speed;
Byte w1,w2,w3,w4;
Byte b_bai_wei,b_shi_wei,b_ge_wei;//speed
if(display_on==0) //运行显示
{
show_speed=(Byte)(speed);
b_bai_wei=show_speed/100;
b_shi_wei=(show_speed%100)/10;
b_ge_wei=show_speed%10;
w1=distance/1000;
w2=(distance%1000)/100;
w3=(distance%100)/10;
w4=(distance%10);
realistic_shi_fen=test_number_no_dot[ten_minute];
realistic_fen=test_number_no_dot[minute];
realistic_shi_miao=test_number_no_dot[ten_second];
realistic_shi_miao=realistic_shi_miao&0x7f;
realistic_miao=test_number_no_dot[second];
realistic_miao=realistic_miao&0x7f;
if((former_second==1)&&(start_time==1))
{
realistic_shi_fen=test_number_no_dot[ten_minute];
realistic_fen=test_number_no_dot[minute];
realistic_shi_miao=test_number_no_dot[ten_second];
realistic_miao=test_number_no_dot[second];
}
if(ten_minute==0)
{
realistic_shi_fen=test_number_no_dot[11];
}
if(b_bai_wei==0)
{
b_bai_wei=11;
realistic_shi_wei=test_number_no_dot[b_bai_wei];
realistic_ge_wei=test_number_no_dot[b_shi_wei];
realistic_ge_wei=realistic_ge_wei&0x7f;
realistic_fen_wei=test_number_no_dot[b_ge_wei];
}
else
{
realistic_shi_wei=test_number_no_dot[b_bai_wei];
realistic_ge_wei=test_number_no_dot[b_shi_wei];
realistic_ge_wei=realistic_ge_wei&0x7f;
realistic_fen_wei=test_number_no_dot[b_ge_wei];
}
if(w1==0)
{
realistic_tenkilometer=test_number_no_dot[w2];
realistic_tenkilometer=realistic_tenkilometer&0x7f;
realistic_kilometer=test_number_no_dot[w3];
realistic_hundredmeter=test_number_no_dot[w4];
}
else
{
realistic_tenkilometer=test_number_no_dot[w1];
realistic_kilometer=test_number_no_dot[w2];
realistic_kilometer=realistic_kilometer&0x7f;
realistic_hundredmeter=test_number_no_dot[w3];
}
}
else if(display_on==1) //安全开关
{
realistic_shi_fen=test_number_no_dot[0];
realistic_fen=test_number_no_dot[0];
realistic_shi_miao=test_number_no_dot[0];
realistic_shi_miao=realistic_shi_miao&0x7f;
realistic_miao=test_number_no_dot[0];
realistic_miao=realistic_miao&0x7f;
realistic_shi_wei=test_number_no_dot[10];
realistic_ge_wei=test_number_no_dot[10];
realistic_fen_wei=test_number_no_dot[10];
realistic_tenkilometer=test_number_no_dot[0];
realistic_tenkilometer=realistic_tenkilometer&0x7f;
realistic_kilometer=test_number_no_dot[0];
realistic_hundredmeter=test_number_no_dot[0];
}
else if(display_on==4) //下控板保护停机
{
realistic_shi_wei=test_number_no_dot[11];
realistic_ge_wei=test_number_no_dot[12];
realistic_fen_wei=test_number_no_dot[1];
realistic_shi_fen=test_number_no_dot[ten_minute];
realistic_fen=test_number_no_dot[minute];
realistic_shi_miao=test_number_no_dot[ten_second];
realistic_shi_miao=realistic_shi_miao&0x7f;
realistic_miao=test_number_no_dot[second];
realistic_miao=realistic_miao&0x7f;
}
else if(display_on==8) //上电显示
{
realistic_shi_fen=0x00;
realistic_fen=0x00;
realistic_shi_miao=0x00;
realistic_miao=0x00;
realistic_shi_wei=0x00;
realistic_ge_wei=0x00;
realistic_fen_wei=0x00;
realistic_tenkilometer=0x00;
realistic_kilometer=0x00;
realistic_hundredmeter=0x00;
}
else if(display_on==16) //安下开始键倒计时3秒
{
realistic_shi_fen=0xff;
realistic_fen=0xff;
realistic_shi_miao=0xff;
realistic_miao=test_number_no_dot[three_dao_ji];
realistic_shi_wei=0xff;
realistic_ge_wei=0xff;
realistic_fen_wei=0xff;
realistic_tenkilometer=0xff;
realistic_kilometer=0xff;
realistic_hundredmeter=0xff;
}
}
void communication_trans_data(Byte com_data)
{
Byte trans_number,i,j;
trans_number=com_data;
trans_pin=1;
for(i=0;i<20;i++)
{
_nop();
}
for(i=0;i<4;i++)
{
trans_number<<=1;
trans_pin=C;
for(j=0;j<20;j++)
{
_nop();
}
}
trans_pin=0;
for(j=0;j<20;j++)
{
_nop();
}
trans_pin=1;
for(j=0;j<20;j++)
{
_nop();
}
for(i=0;i<4;i++)
{
trans_number<<=1;
trans_pin=C;
for(j=0;j<20;j++)
{
_nop();
}
}
trans_pin=1;
}
void receive_com(void)
{
Byte j;
if(receive_pin==0)
{
for(j=0;j<30;j++)
{
_nop();
}
if(receive_pin==0)
{
t_zero=1;
_nop();
}
}
}
void main(void)@page 0
{
Byte sw,cs_times,all_play;
Word on_all_display;
delayms(10);
System_Setup();
display_on=8;
on_all_display=0;
bee_num=1;
three_dao_ji=3;
on_off=0;
cs_times=0;
sw=0;
k=0;
h=0;
t_zero=0;
trans_flag=0;
trans_time=0;
former_speed=8;
key_scan_ss=0;
key_scan_up=0;
key_scan_down=0;
key_scan_three=0;
key_scan_six=0;
key_scan_zero=0;
for(;;)
{
WDTC();
if((power_on==1)&&(display_on==1)){display_on=0;}
if((safe_key==1)&&(display_on!=8)){display_on=1;}
if(safe_key==0){key_scan_safe++;}
if((safe_key==1)&&(power_on==1)){trans_flag=1;trans_num=207;}
if(key_scan_safe>250){power_on=1;key_scan_safe=0;}
else if(safe_key==1){power_on=0;on_off=0;DISI();}
if(Start_stop_key==0)
{
key_scan_ss++;
}
else if((Speed_up_key==0)&&(Speed_down_key==1))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -