/*
编写LED控制程序,完成LED奇数号灯和偶数号灯的交替显示。
要求:
一、P0口外接8个LED、P1.0~P1.2外接三个按键。
二、T0做延时,溢出定为10ms。
三、按键0~2分别控制闪烁间隔时间分别为,0.5s,1s,2s。
四、开机后,LED全部点亮,3s后以0.5s交替。
单片机高手帮下忙,最好用C写。
悬赏分:80 - 解决时间:2010-1-21 21:42
*/
//最佳答案:
=======================================================
//以下程序通过了PROTEUS仿真试验,可以满足要求。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit K0 = P3^2;
sbit K1 = P3^3;
sbit K2 = P3^4;
uchar t1 = 0, t2 = 0, t3 = 0, aaa = 0x55, delay_time = 0;
//-------------------------------
void TIME0()interrupt 1
{
TH0 = 0xD8; //初值
TL0 = 0xF0; //10ms @ 12MHz
t1++;
if(t1 == 50) { //每到500ms
t1 = 0;
t2++;
if(t2 == 6) { //到了3s
t2 = 5;
t3++;
if (t3 >= delay_time) {
t3 = 0;
aaa = 255 - aaa;
P0 = aaa;
} } }
}
//-------------------------------
void main() //主函数
{
TMOD = 0x01; //T0定时
TH0 = 0xD8; //初值
TL0 = 0xF0; //10ms @ 12MHz
TR0 = 1;
ET0 = 1;
EA = 1;
P0 = 0x00;
delay_time = 1;
while (1) {
if (K0 == 0) delay_time = 1;
if (K1 == 0) delay_time = 2;
if (K2 == 0) delay_time = 4;
}
}
用 PROTEUS 仿真截图如下:
=======================================================
回答者:做而论道 - 十二级 2010-1-5 20:57
原题网址:http://zhidao.baidu.com/question/132137803.html
=======================================================