?? main.c
字號:
#include <config.h>
void scan_key();
void init();
void shutoff();
void decode_number(unsigned char key);
void move_left();
void setNumber(unsigned char key_value);
void display_value();
void move_right();
void register_do(unsigned char k);
void clear_to_zero();
void flash();
void shutoff();
void shutoff1();
void enter_second_mod();
unsigned char k=N;//鍵值,N位無效按鍵
unsigned char init_value[8]={0x6e,0x9E,0x1C,0x1C,0xfC,0x02,0xfC,0XBE};
unsigned char flag_second=0;
unsigned char flag_flash=0;
unsigned char flag_shutoff=0;
void main(){
/*
初始化,顯示hello-06
*/
init();
while(1){
scan_key();//掃描按鍵
if(flag_second<3&&k!=18){
if(flag_flash==0||k==D){
switch(k){
case C :
flag_flash=1;
k=N;
break;
case D :
flag_flash=0;
flag_second=1;
display_value();
k=N;
break;
case E :
clear_to_zero();
k=N;
break;
case F :
if(flag_shutoff==0)
flag_shutoff=1;
else flag_shutoff=0;
shutoff1();
k=N;
break;
case N :
break;
default :
register_do(k);
k=N;
break;
}
}
else{
flash();
}
}
else{
if(k!=D){
if(k==C){
enter_second_mod();
}
else
register_do(k+20);
k=18;
//enter_second_mod();
}
else
flag_second=0;
}
}
}
void clear_to_zero(){
unsigned char i ;
SBUF=0xFD;
while(TI==0);
TI=0;
for(i=0;i<7;i++){
SBUF=0x00;
init_value[i]=0;
while(TI==0);
TI=0;
}
init_value[7]=0;
}
void register_do(unsigned char k){
if(k!=18){
decode_number(k);
display_value();
delay(40);
}
}
void setNumber(unsigned char key_value){
unsigned char s;
for(s=0;s<7;s++){
init_value[s]=init_value[s+1];
}
init_value[7]=key_value;
}
void init(){
SCON=0X01;
EA=1;
ES=0;
display_value();
delay(1000);
flash();
delay(500);
flash();
delay(500);
flash();
delay(500);
flash();
delay(500);
clear_to_zero();
}
void decode_number(unsigned char key){
switch(key){
case 0 :
setNumber(zero);
break;
case 1:
setNumber(one);
break;
case 2:
setNumber(two);
break;
case 3 :
setNumber(three);
break;
case 4 :
setNumber(four);
break;
case 5 :
setNumber(five);
break;
case 6 :
setNumber(six);
break;
case 7 :
setNumber(seven);
break;
case 8 :
setNumber(eight);
break;
case 9 :
setNumber(nine);
break;
case A :
setNumber(0);
break;
case B :
move_right();
break;
case 20 :
setNumber(leterA);
break;
case 21 :
setNumber(leterB);
break;
case 22 :
setNumber(leterC);
break;
case 23 :
setNumber(leterD);
break;
case 24 :
setNumber(leterE);
break;
case 25 :
setNumber(leterF);
break;
case 26:
setNumber(leterN);
break;
case 27 :
setNumber(leterH);
break;
default :
break;
}
}
void display_value(){
unsigned char i;
for(i=0;i<8;i++){
SBUF=init_value[7-i];
while(TI==0);
TI=0;
}
}
void scan_key(){
unsigned char x,y,z;
P1=0xff;
P1=0x0f;
if((P1&0x0f)!=0x0f)
{
delay(100);
if((P1&0x0f)!=0x0f)
{
x=P1;
P1=0xf0;
y=P1;
z=x^y;
switch(z)
{
case 0xee: k=0; break;
case 0xde: k=1; break;
case 0xbe: k=2; break;
case 0x7e: k=3; break;
case 0xed: k=4; break;
case 0xdd: k=5; break;
case 0xbd: k=6; break;
case 0x7d: k=7; break;
case 0xeb: k=8; break;
case 0xdb: k=9; break;
case 0xbb: k=A;break;
case 0x7b: k=B;break;
case 0xe7: k=C;break;
case 0xd7: k=D;break;
case 0xb7: k=E;break;
case 0x77: k=F;break;
default : k=N;break;
}
}
}
}
void move_right(){
unsigned char s;
flag_second+=2;
if(flag_second<3){
if(init_value[7]!=0){
for(s=8;s!=1;s--){
init_value[s-1]=init_value[s-2];
}
init_value[0]=0;
}
else
init_value[7]=0x01;
}
}
void flash(){
display_value();
delay(100);
shutoff();
delay(200);
}
void shutoff1(){
delay(800);
if(flag_shutoff==1){
unsigned char i;
for(i=0;i<8;i++){
SBUF=0x00;
while(TI==0);
TI=0;
}
}else{
display_value();
}
delay(1000);
}
void shutoff(){
unsigned char i;
for(i=0;i<8;i++){
SBUF=0x00;
while(TI==0);
TI=0;
}
}
void enter_second_mod(){
unsigned char i;
for(i=0;i<8;i++){
SBUF=init_value[7-i];
while(TI==0);
TI=0;
delay(800);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -