gmumain.c
来自「该程序实现六位LED的动态扫描显示,能设置波特率,」· C语言 代码 · 共 985 行 · 第 1/3 页
C
985 行
case 1: temp[5] = temp[5]&0x7f;
break;
case 2: temp[4] = temp[4]&0x7f;
break;
case 3: temp[3] = temp[3]&0x7f;
break;
case 4: temp[2] = temp[2]&0x7f;
break;
case 5: temp[1] = temp[1]&0x7f;
break;
default :break;
}
if((temp[5] == 0xc0)&&(tht_temp==2)) temp[5] = 0xff;
if((temp[5] == 0xc0)&&(tht_temp==3)&&(temp[4] == 0xc0)){
temp[5] = 0xff;
temp[4] = 0xff;
}
if((temp[5] == 0xc0)&&(tht_temp==4)&&(temp[4] == 0xc0)&&(temp[3] == 0xc0))
{
temp[5] = 0xff;
temp[4] = 0xff;
temp[3] = 0xff;
}
if((temp[5] == 0xc0)&&(tht_temp==5)&&(temp[4] == 0xc0)&&(temp[3] == 0xc0)&&(temp[2] == 0xc0))
{
temp[5] = 0xff;
temp[4] = 0xff;
temp[3] = 0xff;
temp[2] = 0xff;
temp[1] = temp[1] | 0x80;
}
tht_temp = start_add;
for(i=5;i>0;i--)
{
j = i - tht_temp;
if(j<0) break;
dis_big_value[j] = temp[i];
}
}
unsigned char key_scan(void)
{
unsigned char temp;
temp = P1;
temp = temp | 0xe1;
if(temp == 0xff) return (0);
temp =0;
delayms(15);
temp = set_key;
if(temp==0) return(2);
temp =0;
temp = left_key;
if(temp==0) return(4);
temp =0;
temp = up_key;
if(temp==0) return(8);
temp =0;
temp = ds_key;
if(temp==0) return(16);
return(0);
}
void delay(int delaytime)
{
while(delaytime--){
_nop_();
}
}
void delayms(int delaytime)
{
while(delaytime--){
delay(1000);
}
}
void display_bit(unsigned char value_temp,unsigned char flash_bit,unsigned char dot_flag)
{
unsigned char temp;
// unsigned char i;
temp = value_temp;
if(temp>9) temp = 10;
temp = tab_value[temp];
if(flash_bit > 5) flash_bit = 0;
if(dot_flag==0){
dis_big_value[5 - flash_bit] = temp;
return;
}
else{
dis_big_value[5 - flash_bit] = temp&0x7f;//点亮小数点
}
}
void setmenu_hld(unsigned char hld_flag)
{
unsigned char temp;
unsigned char tht_temp[6];
unsigned char set_point;
unsigned char dot_ffflag;
unsigned char breakflag;
unsigned int i;
long tht_temp_tht;
long tht_temp_1111;
flash_times = 10;
menu_exit_flag = 0;
if(hld_flag==0){
tht_temp_1111 = read_long(10); //h
dis_value(tht_temp_1111,4,1);
dis_big_value[5] = 0x89; //h
}
else if(hld_flag==1){
tht_temp_1111 = read_long(20); //L
dis_value(tht_temp_1111,4,1);
dis_big_value[5] = 0xc7; //L
}
else {
tht_temp_1111 = read_long(60); //d
dis_value(tht_temp_1111,4,1);
dis_big_value[5] = 0xa1; //d
}
display_bit(0,4,1);
tht_temp[5] = tht_temp_1111%10;
tht_temp_1111 = tht_temp_1111/10;
tht_temp[4] = tht_temp_1111%10;
tht_temp_1111 = tht_temp_1111/10;
tht_temp[3] = tht_temp_1111%10;
tht_temp_1111 = tht_temp_1111/10;
tht_temp[2] = tht_temp_1111%10;
tht_temp_1111 = tht_temp_1111/10;
tht_temp[1] = tht_temp_1111%10;
display_bit(tht_temp[4],4,1);
set_point = 5;
while(1){
breakflag = 0;
if(set_point==4) dot_ffflag = 1;//小数点位置
else dot_ffflag = 0;
while(1){
for(i = 0;i <2000; i++){
display_bit(tht_temp[set_point],set_point,dot_ffflag);
delay(3);
temp = key_scan();
if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
{
breakflag = 1;
break;
}
}
if(breakflag == 1) break;
flash_times = flash_times - 1;
if(flash_times<0) {
menu_exit_flag = 1;
return;
}
//**********************************************************
for(i = 0;i <2000; i++){
display_bit(10,set_point,dot_ffflag);
delay(3);
temp = key_scan();
if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
{
breakflag = 1;
break;
}
}
if(breakflag == 1) break;
}
flash_times = 10;
menu_exit_flag = 0;
if(temp==set_value) {//执行到下一步设置状态了,保存当前设置的上限,下限和起始值
tht_temp_tht = 0;
tht_temp_1111 = tht_temp[1];
tht_temp_tht = tht_temp_1111*10000;
tht_temp_1111 = tht_temp[2];
tht_temp_tht = tht_temp_tht + tht_temp_1111*1000;
tht_temp_1111 = tht_temp[3];
tht_temp_tht = tht_temp_tht + tht_temp_1111*100;
tht_temp_1111 = tht_temp[4];
tht_temp_tht = tht_temp_tht + tht_temp_1111*10;
tht_temp_1111 = tht_temp[5];
tht_temp_tht = tht_temp_tht + tht_temp_1111;
if(hld_flag==0) write_long(10,tht_temp_tht); //h
else if(hld_flag==1) write_long(20,tht_temp_tht); //l
else write_long(60,tht_temp_tht); //d
//write_int(unsigned int address,unsigned int dd);
//10 高
//20 低
//30 倍率
//40 地址
//50 拨特率
//60 起始位
return;
}
if(temp==up_value){
tht_temp[set_point] = tht_temp[set_point] + 1;
if(tht_temp[set_point]>9) tht_temp[set_point] = 0;
}
if(temp ==left_value){
display_bit(tht_temp[set_point],set_point,dot_ffflag);
set_point = set_point + 1;
if(set_point>5) set_point = 1;
}
}
}
void setmenu_b(void)
{
unsigned char temp;
unsigned char tht_temp[6];
unsigned char set_point;
unsigned char dot_ffflag;
unsigned char breakflag;
unsigned int i;
long tht_temp_tht;
long tht_temp_1111;
unsigned char fangda;
flash_times = 10;
menu_exit_flag = 0;
tht_temp_1111 = read_long(30); //b;
dis_value(tht_temp_1111,3,3);
dis_big_value[5] = 0x83; //b
tht_temp[5] = tht_temp_1111%10;
display_bit(tht_temp[5],5,0);
tht_temp_1111 = tht_temp_1111/10;
tht_temp[4] = tht_temp_1111%10;
display_bit(tht_temp[4],4,0);
tht_temp_1111 = tht_temp_1111/10;
tht_temp[3] = tht_temp_1111%10;
display_bit(tht_temp[3],3,1);
set_point = 5;
while(1){
breakflag = 0;
//fangda = 0;
if(set_point==3) dot_ffflag = 1;
else if(set_point==4 && fangda==1){fangda=0;dot_ffflag=1;}
else dot_ffflag = 0;
while(1){
for(i = 0;i <2000; i++){
display_bit(tht_temp[set_point],set_point,dot_ffflag);
delay(3);
temp = key_scan();
if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
{
breakflag = 1;
break;
}
}
if(breakflag == 1) break;
flash_times = flash_times - 1;
if(flash_times<0) {
menu_exit_flag = 1;
return;
}
//**********************************************************
for(i = 0;i <2000; i++){
display_bit(10,set_point,dot_ffflag);
delay(3);
temp = key_scan();
if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
{
breakflag = 1;
break;
}
}
if(breakflag == 1) break;
}
flash_times = 10;
menu_exit_flag = 0;
if(temp==set_value) {//执行到下一步设置状态了,保存当前设置的倍率值
tht_temp_tht = 0;
tht_temp_1111 = tht_temp[3];
tht_temp_tht = tht_temp_tht + tht_temp_1111*100;
tht_temp_1111 = tht_temp[4];
tht_temp_tht = tht_temp_tht + tht_temp_1111*10;
tht_temp_1111 = tht_temp[5];
tht_temp_tht = tht_temp_tht + tht_temp_1111;
write_long(30,tht_temp_tht); //b
return;
}
if(temp==up_value){
tht_temp[set_point] = tht_temp[set_point] + 1;
if(tht_temp[set_point]>9) tht_temp[set_point] = 0;
if(tht_temp[3]>9) tht_temp[3]=0;
if((tht_temp[3]==0)&&(tht_temp[4]>9)) tht_temp[4]=0;
if((tht_temp[3]==0)&&(tht_temp[4]<=1)&&(tht_temp[5]>0)) tht_temp[5]=0;
if((tht_temp[3]==9)&&(tht_temp[4]==9)&&(tht_temp[5]>9)) tht_temp[5]=0;
}
if(temp ==left_value){
display_bit(tht_temp[set_point],set_point,dot_ffflag);
set_point = set_point + 1;
if(set_point>5) set_point = 3;
}
}
}
void setmenu_p(void)
{
unsigned char set_point;
unsigned char breakflag;
unsigned int i;
unsigned char temp;
flash_times = 10;
menu_exit_flag = 0;
set_point = read(50);
if(set_point>5) set_point = 1;
switch(set_point){
case 0:disvalue_big_asc("P 600");
break;
case 1:disvalue_big_asc("P 1200");
break;
case 2:disvalue_big_asc("P 2400");
break;
case 3:disvalue_big_asc("P 4800");
break;
case 4:disvalue_big_asc("P 9600");
break;
case 5:disvalue_big_asc("P19200");
break;
default:break;
}
while(1){
breakflag = 0;
while(1){
for(i = 0;i <2000; i++){
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?