#include<reg52.h>
sbit led_in=P3^4 //利用计数器记录电压变化次数
usigned int num
usigned T_led //周期
void init()
{
TMOD=0X25 //T0方式一计数,T1方式2定时
TL1=55
TH1=55//定时200-55us=200us,中断一次
num=5000 //200us*5000=1s
TR0=1
TR1=1
EA=1
}
void test_led()
{
T_led=1/(TH0*256+TL0) //定时1S,LED闪烁次迅差数TH0*256+TL0
}
void main()
{
init()
while(1)
}
void T1_p()interrupt 3
{
num--
if(num<=0)
{
num=5000
TR0=0//关计数器,开始计算LED周期
test_led()
}
}
由于没信嫌有在板子上测试,程序应该还是有问题的,不过大概框架是这样了,这也只是其中一种方案,其实这样的东西方案会比较多的,你可以选一种简单的方案。
点亮 小灯的程序我们第二课完成了,就是让 LED = 0。熄灭小灯的程序也很简单,就是 LED = 1。点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁了。我们首先复习一下 Keil 写程序的过程,建立工程-->保存工程-->建立文件-->添加文件到工程-->编写程序-->编译-->下载程序。
LED 对于有 C 基础的同学来团搜说塌磨历很简单,那我先写出来,大家可以先看下。游禅没有C 语言基础的同学也可以跟着抄一遍,下节课我会补充部分 C 语言基础知识,这样你先抄一遍后,再跟着看 C 语言基础知识的时候也比较容易理解透彻。
纯文本复制
#<reg52.h>
sbit LED = P0^0
sbit ADDR0 = P1^0
sbit ADDR1 = P1^1
sbit ADDR2 = P1^2
sbit ADDR3 = P1^3
sbit ENLED = P1^4
main(){ //void 即函数类型
//以下为声明语句部分
unsigned int i = 0//定义一个变量 i,并赋初值 0
//以下为执行语句部分
ENLED = 0//U3、U4 两片 74HC138 总使能
ADDR3 = 1//使能 U3 使之正常输出
ADDR2 = 1//经 U3 的 Y6 输出开启Q16
ADDR1 = 1
ADDR0 = 0
(1){
LED = 0//点亮小灯
for (i=0i<30000i++)//延时一段时间
LED = 1//熄灭小灯
for (i=0i<30000i++)//延时一段时间
}
}
大家把这个程序编译一下,下载到里,就会发现 LED2 这个小灯会闪烁了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)