下面的函数在我下面那个H文件里调用 麻烦给问大神给我看下 要求是按下K4时 串口助手接收到此时数码管显示的时间 我的程序为什么接收不到
- #include<reg52.h>
- #include<ZXW.H>
- u16 x=1;
- void Usart_Init()
- {
- TMOD|=0x10;
- TH1=0XF3;
- TL1=0XF3;
- PCON=0X00;
- TR1=1;
- SCON=0X50;
- ES=1;
- EA=1;
- }
- void Usart()interrupt 4
- {
-
- if(k4==0){ SBUF=1;
- while(!TI);
- TI=0;
- EA=0;
- }
- }
-
- void main()
- { Usart_Init();
- while(1)
- {
- if(k1==0)
- {delay(100);
- if(k1==0){
- Timer0Init(); //定时器中断
- int0Init(); //外部中断
- while(1){
- shuzi(); //数码管显示的值
- DigDisplay();//数码管显示函数
- D8liang(); //按下K4时D8灯亮的函数
- led=1;
-
- if(k2==0){
- delay(100);
- if(k2==0){
- D8liang();
- led=1;
-
- break;
- }
- } }
- stop();
- Usart_Init();
- while(1)
- {
- shuzi();
- DigDisplay();
- D8liang();
- led=1;
-
- if(k1==0)
- {
- delay(100);
- if(k1==0){
- D8liang();
- led=1;
-
- break;
- }}
- }}}}}
- H文件
- typedef unsigned char u8;
- typedef unsigned int u16;
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- sbit k1=P3^1;
- sbit k2=P3^0;
- sbit k3=P3^2;
- sbit k4=P3^3;
- sbit led=P2^7;
- u16 DisplayData[8];
- u8 smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- u16 a,b,c;
- void delay(u16 i)
- {
- while(i--);
- }
- void DigDisplay()
- {
- u8 i;
- for(i=0;i<8;i++)
- {
- switch(i) //位选,选择点亮的数码管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//显示第0位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//显示第1位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//显示第2位
- case(3):
- LSA=1;LSB=1;LSC=0; break;//显示第3位
- case(4):
- LSA=0;LSB=0;LSC=1; break;//显示第4位
- case(5):
- LSA=1;LSB=0;LSC=1; break;//显示第5位
- case(6):
- LSA=0;LSB=1;LSC=1; break;//显示第6位
- case(7):
- LSA=1;LSB=1;LSC=1; break;//显示第7位
- }
- P0=DisplayData[i];//发送段码
- delay(10); //间隔一段时间扫描
- P0=0x00;//消隐
- }}
- void shuzi(){
- DisplayData[0]=smgduan[c%10];
- DisplayData[1]=smgduan[c/10];
- DisplayData[2]=0x40;
- DisplayData[3]=smgduan[b%10];
- DisplayData[4]=smgduan[b/10];
- DisplayData[5]=0x40;
- DisplayData[6]=smgduan[a%10];
- DisplayData[7]=smgduan[a/10];
- }
- void int0Init()
- {
- EA=1;
- EX0=1;
- IT0=0;
- }
- void Timer0Init()
- {
- TMOD|=0X01;
- TH0=0X3C;
- TL0=0XB0;
- ET0=1;
- EA=1;
- TR0=1;
- }
- void stop(){
- EA=1;
- TR0=1;
- ET0=0;
- }
- void D8liang(){
- if(k4==0){
- delay(100);
- if(k4==0){led=0;
- }while(!k4){shuzi();
- DigDisplay();
- }
- }
- }
- void Time0()interrupt 1
- {
- static u16 i;
- i=0;
- TH0=0X3C;
- TL0=0XB0;
- c++;
- if(c==20)
- {
- c=0;
- b++;
- if(b==60)
- {
- b=0;
- a++;
- if(a==60)
- {
- a=0;
- } }}
- }
- void Init0() interrupt 0
- {
- delay(1000);
- if(k3==0)
- { while(1)
- {
- P0=0X00;
- P2=0XFF;
- a=0;b=0;c=0;
- if(k1==0)
- {delay(100);
- if(k1==0){
- break;}}}}}
复制代码
|