用定时器1控制四位数码管从6432减到6393保持住这个数值,同时用定时器0控制流水灯从上至下以500ms移动同时停止!!!然后流水灯全部闪烁2.4秒后熄灭!继而数码管上显示6666
2015-09-05 18:12
483 查看
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar code tab[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; uchar temp,bai,shi,ge,aa,flag,flag1,t0,t1; uint shu; void display(uchar aa,uchar bai,uchar shi,uchar ge); void init(); void delay(uint z); void main() { init(); while(1) { if(flag1!=1) display(6,bai,shi,ge); else display(6,6,6,6); } } void init() { shu=432; temp=0xfe; P1=temp; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; TR0=1; ET1=1; TR1=1; } void time1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; t1++; if(t1==2) { t1=0; bai=shu/100; shi=shu%100/10; ge=shu%10; shu--; if(shu==393) { TR0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; t0++; P1=0xff; TR1=0; flag=1; } } } void time0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0++; if(flag!=1) { if(t0==10) { t0=0; temp=_crol_(temp,1); P1=temp; // flag1=1; } } else { if(t0%4==0) P1=~P1; if(t0==48) { TR0=0; P1=0xff; flag1=1; } } } void display(uchar aa,uchar bai,uchar shi,uchar ge) { wela=1; P2=0xfe; wela=0; dula=1; P0=tab[aa]; dula=0; delay(5); wela=1; P2=0xfd; wela=0; dula=1; P0=tab[bai]; dula=0; delay(5); wela=1; P2=0xfb; wela=0; dula=1; P0=tab[shi]; dula=0; delay(5); wela=1; P2=0xf7; wela=0; dula=1; P0=tab[ge]; dula=0; delay(5); } void delay(uint z) { uint x,y; for(x=0;x<z;x++) for(y=0;y<110;y++); }其中发现的一个错误:for()后加分号导致程序不能运行;灯闪烁时间本来是写的三秒钟但是t0取余过程中要考虑到取余的次数是偶数次因此将时间换成了2.4秒;数码管最后静止的数本来是6398;但是我发现流水灯亮不了最后一个灯,因此数字也改了一下
相关文章推荐
- OC语言NSDate和NSFormater
- Axure学习之流程图组件和自定义部件
- 浙江大学PAT_乙级_1015. 德才论 (25)
- -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a
- Sshguard
- android---listview
- C语言
- POJ-1477
- Android 控件之十一:列表组件 ListView
- Android设计模式——单例模式(Singleton)
- 正则表达式炼级攻略
- C语言
- Arrays 排序
- tengine健康检查常见方式 | Linux服务器维护
- Codeforces Gym 100610 Problem E. Explicit Formula 水题
- 如何用JQuery弹出小窗口(是注册页面)提交表单form
- NBUT 1218 You are my brother
- Android 控件之十一:RatingBar评分条
- HDU5399-多校-模拟
- LeetCode || Reverse Integer