給你改了,對(duì)比一下就知道哪里錯(cuò)了。
- /*
- 在線等請(qǐng)問(wèn)各位大佬這個(gè)單片機(jī)程序出錯(cuò)了,怎么修改?謝謝
- 問(wèn)題不在void to12() ,是void keyscan()里面最后少了一個(gè)"}"。
- */
- #include <reg52.h>
- #include <intrins.h>
- #include <absacc.h>
- sbit kgnxz=P3^0; //功能選擇鍵,按一次設(shè)定時(shí)間,按兩次設(shè)定鬧鐘時(shí)間,按三次又顯示時(shí)間表
- sbit ksec=P3^1; //調(diào)整秒
- sbit kmin=P3^2; //調(diào)整分
- sbit khour=P3^3; //調(diào)整時(shí)
- sbit kzh=P3^4; //24與12小時(shí)制轉(zhuǎn)換
- unsigned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0,flag=0; //flag是按鍵的計(jì)數(shù)
- unsigned char secshi1=0,secge1=0,minshi1=0,minge1=0,hourshi1=0,hourge1=0;//定義存儲(chǔ)時(shí)間和鬧鐘時(shí)分秒的個(gè)位和十位
- unsigned int num=0,sec=0,min=0,hour=0,sec1=30,min1=0,hour1=1, num1=0;//定義時(shí)間和鬧鐘的時(shí)分秒
- unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)碼管段控口
- void keyscan();//鍵盤(pán)掃描函數(shù)
- void display();//時(shí)鐘顯示函數(shù)
- /***延時(shí)函數(shù)****/
- void delay(unsigned char z)
- {
- unsigned char x,y;
- for(x=z;x>0;x--)
- for(y=255;y>0;y--);
- }
- /***中斷函數(shù)****/
- void time0() interrupt 1
- {
- num++;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(num==20)
- {
- num=0;
- sec++;
- if(sec==60)
- {
- sec=0;
- min++;
- if(min==60)
- {
- min=0;
- hour++;
- if(hour==24)
- {
- hour=0;
- }
- }
- }
- display(); }
- }
- /******時(shí)鐘顯示函數(shù)******/
- void display()
- {
- secge=sec%10;
- secshi=sec/10;
- minge=min%10;
- minshi=min/10;
- hourge=hour%10;
- hourshi=hour/10;
- P2=0xfe;
- P0=table[secge];
- delay(5);
- P2=0xfd;
- P0=table[secshi];
- delay(5);
- P2=0xfb;
- P0=0x40;
- delay(5);
- P2=0xf7;
- P0=table[minge];
- delay(5);
- P2=0xef;
- P0=table[minshi];
- delay(5);
- P2=0xdf;
- P0=0x40;
- delay(5);
- P2=0xbf;
- P0=table[hourge];
- delay(5);
- P2=0x7f;
- P0=table[hourshi];
- delay(5);
- }
- /*****鍵盤(pán)掃描*********/
- void keyscan()
- {
- if(kgnxz==0) //功能選擇鍵是否按下
- {
- delay(10);//延時(shí)消抖
- if(kgnxz==0)//再次判斷鍵是否按下
- { flag++; } //計(jì)數(shù),功能選擇鍵按鍵次數(shù)加一
- while(!kgnxz); //釋放鍵
- }
- if(flag==1)//功能選擇鍵
- {
- if(ksec==0)//秒調(diào)整鍵
- {
- delay(10);//延時(shí)消抖
- if(ksec==0)//再次判斷鍵是否按下
- {
- sec++;//秒加加
- if(sec>=60)//如果秒大于60
- sec=0;//秒清零
- }
- while(ksec==0)//釋放鍵
- display();}
- if(kmin==0)
- {
- delay(10);
- if(kmin==0)
- {
- min++;
- if(min>=60)
- min=0;
- }
- while(kmin==0)
- display();
- }
- if(khour==0)
- {
- delay(10);
- if(khour==0)
- {
- hour++;
- if(hour==24)
- hour=0;
- }
- while(khour==0)
- display();
- }
- }
- } //<-------------- 錯(cuò)了 少了一個(gè)
- /*****24轉(zhuǎn)12小時(shí)制*********/
- void to12() // keil編程這里有錯(cuò)誤
- {
- if(hour>=12)
- {hour=hour-12;}
- if(hour1>=12)
- {hour1=hour1-12;}
- }
- /*****主函數(shù)*********/
- main()
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1; ET0=1; TR0=1;
- while(1)
- {
- keyscan();display();
- if(flag==1) {keyscan(); display();}
- if(flag==2) {keyscan(); display1();}
- if(flag==3) {display();}
- if(kzh==0) {to12();}
- }
- }
復(fù)制代碼 |