51單片機問題求助,P1^0口led改變狀態,產生脈沖,T0計數加一數碼管顯示,T1定時數碼管,正常顯示不了,改了好幾次,不知道哪里錯了,求助,謝謝
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit led=P1^0; //用杜邦線連接p1^0和p3^4
- sbit dula=P2^6;
- sbit wela=P2^7;
- uchar code table[]=(0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f); //0~9
- void delay(uint j)
- {
- uint m,n;
- for(m=j;m>0;m--)
- for(n=125;n>0;n--);
- }
- void display(uchar i)
- {
- uchar bai,shi,ge;
- bai=i/100;
- shi=i%100/10;
- ge=i%10;
- P0=0xff;
- wela=1;
- P0=0xfe;
- wela=0;
- dula=1;
- P0=table[bai];
- dula=0;
- delay(1);
- P0=0xff;
- wela=1;
- P0=0xfd;
- wela=0;
-
- dula=1;
- P0=table[shi];
- dula=0;
- delay(5);
-
- P0=0xff;
- wela=1;
- P0=0xfb;
- wela=0;
-
- dula=1;
- P0=table[ge];
- dula=0;
- delay(5);
- }
- void t0Init() //
- {
- TR0=1;
-
- TMOD |=0x05; //實現計數功能
- TH0=0;
- TL0=0;
- }
- void t1Init()
- {
- TR1=1;
- TMOD |=0x10;
- TH1=0x4b; //定時50ms
- TL1=0xfd;
- }
- void main() //main函數自身會循環
- {
- uchar mSec; //毫秒和秒儲存變量
- t0Init() ;
- t1Init() ;
- TH0=0;
- TL0=0;
- while(1)
- {
- if(TF1==1)
- { //判斷是否溢出
- TF1=0; //軟件清零溢出標志位
- TH1=0x4b; //定時50ms
- TL1=0xfd;
- mSec++;
- if(mSec==10)
- {
- mSec=0;
- led=~led; //產生方波
- }
-
- }
-
- display(TL0);//數碼管顯示函數
- }
- }
復制代碼
|