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);//数码管显示函数
- }
- }
复制代码
|