開始是一樣多的,顯示會有問題,但是通過按鍵10直接跳出來就正常,后來數組元素多+了一個才正常了,但是想不通為什么要多加一個才正常,又不是字符串。按鍵返回值得那個函數就沒貼了,包含在anjian.c里面。還有外部函數調用我怎么沒反應,delay()、key()使用前聲明了extern啊,編譯也通過,下載到單片機里沒反應。
- #include<reg52.h>
- #include "anjian.c"//按鍵檢測函數key()
- #define uint unsigned int
- #define uchar unsigned char
- #define NUM 4//等待按鍵個數為NUM
- #define time 10000//按鍵抖動延時,大概90ms
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
- 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
- uchar str[NUM+1]={0};//按鍵字符數組,必須加1,否則會亂碼!
- void strkey()//按鍵值賦給str[]數組
- {
- uchar i;
- for(i=0;i<NUM;i++)
- {
- str[i]=key();
- if(str[i]==10)//按鍵10表示確認
- {
- break;
- }
- if(str[i]==11)//按鍵11表示取消,數組清零
- {
- for(i=0;i<NUM;i++)
- str[i]=0;
- i=0;
- str[i]=key();
- }
- }
- }
- void main()
- {
- uchar a,x;
- strkey();
- while(1)
- {
- for(x=0;x<4;x++)//顯示str[]數組元素到4個數碼管
- {
- a=str[x];
- P3=table[a];
- P2=(~(0x01<<x));
- delay(200);
- P2=0xff;
- }
- a=0;
- }
- }
復制代碼
|