放大器的魅力🌀 zz4351
挥挥手告别往日的云彩。
关注数: 19 粉丝数: 490 发帖数: 25,481 关注贴吧数: 23
这段程序怎么不能实现延时?谢谢你们了 程序目标是数码管加1到2100,然后减1到0 循环。 现在是数码管上 个位 速度太快 能帮我看看怎么把速度慢下来 人眼可以明显看出来。设置了定时器好像没用啊我是新手 谢谢你们了 #include<reg52.h> #define uint unsigned int #define uchar unsigned char //引脚定义: sbit q=P2^0;//定义数码管阳级控制脚(千位) sbit b=P2^1;//定义数码管阳级控制脚(百位) sbit s=P2^2;//定义数码管阳级控制脚(十位) sbit g=P2^3;//定义数码管阳级控制脚(个位) sbit L1=P1^2; // sbit L2=P1^3; sbit L3=P1^4;// uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90}; //共阳数码管管码 uint num2; // uint num; // void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=50;y>0;y--); } void OK() { L1=0; delay(200); L1=1; delay(30); L2=0; delay(300); L2=1; delay(27); L3=0; delay(140); L3=1; delay(40); } // void sd1(); void sd2(); void time1(); void time2(); void main() { while(1) { EA=1; ET1=1; TMOD=0x10; TH1=(65536-50000)/256; //定时器赋初值 除数求整 TL1=(65536-50000)%256; //定时器赋初值 除数求余 TR1=1; num++; if(num==500) { delay(500); OK(); delay(500); sd2(); } } } void sd1()//---- { if(num2==2100) { while (1) { if(num2==0) { sd2(); } time2(); // g=0; P0=table[num2%10]; delay(20); P0=0XFF; g=1; s=0; P0=table[num2/10%10]; delay(20); P0=0XFF; s=1; b=0; P0=table[num2/100%10]; delay(20); P0=0XFF; b=1; q=0; P0=table[num2/1000]; delay(20); P0=0XFF; q=1; } } } void sd2()//+++ { while(1) { if(num2==2100) { sd1(); } time1(); // g=0; P0=table[num2%10]; delay(20); P0=0XFF; g=1; s=0; P0=table[num2/10%10]; delay(20); P0=0XFF; s=1; b=0; P0=table[num2/100%10]; delay(20); P0=0XFF; b=1; q=0; P0=table[num2/1000]; delay(20); P0=0XFF; q=1; } } void time1() interrupt 3 using 1//中断子程序 { EA=1; ET1=1; TMOD=0x10; TH1=(65536-50000)/256; //定时器赋初值 除数求整 TL1=(65536-50000)%256; //定时器赋初值 除数求余 TR1=1; num++; if(num==500) {num2++;} } void time2() interrupt 3 using 1//中断子程序 { EA=1; ET1=1; TMOD=0x10; TH1=(65536-50000)/256; //定时器赋初值 除数求整 TL1=(65536-50000)%256; //定时器赋初值 除数求余 TR1=1; num++; if(num==500) {num2--;} }
首页 1 2 下一页