用C语言编写,单片机控制LED灯并用定时器延时,每隔一秒使LED依次点亮,8 个灯
展开全部
我再帮你补一课,看了你的标题,我写了一个用定时器0来控制一个LED灯第隔1秒钟亮灭一次的程序,希望对你有用,另外我也写了一个你说的那个程序,一起发上来吧
****************这个是用定时器0控制一个灯的亮和灭******************************
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/**************************************/
uchar num;
bit tt;
sbit d=P1^0;
/******************主程序入口********************/
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TCON=0x10;
EA=1;
ET0=1;
tt=255;
while(1)
{
if(num==20)
{
tt=!tt;
d=tt;
num=0;
}
}
}
void timer() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}
****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)***********************
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/**************************************/
uchar num,tt;
//bit tt;
sbit d=P1^0;
/******************主程序入口********************/
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TCON=0x10;
EA=1;
ET0=1;
tt=255;
while(1)
{
if(num==20)
{
tt--;
P1=tt;
num=0;
}
}
}
void timer() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}
****************这个是用定时器0控制一个灯的亮和灭******************************
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/**************************************/
uchar num;
bit tt;
sbit d=P1^0;
/******************主程序入口********************/
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TCON=0x10;
EA=1;
ET0=1;
tt=255;
while(1)
{
if(num==20)
{
tt=!tt;
d=tt;
num=0;
}
}
}
void timer() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}
****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)***********************
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/**************************************/
uchar num,tt;
//bit tt;
sbit d=P1^0;
/******************主程序入口********************/
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TCON=0x10;
EA=1;
ET0=1;
tt=255;
while(1)
{
if(num==20)
{
tt--;
P1=tt;
num=0;
}
}
}
void timer() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
单片机串口通信的原理是利用单片机的串口通信模块,通过把数据转化为一位一位的用时序方式传送数据,实现单片机与外部设备之间的数据通信。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
展开全部
‘每隔一秒使LED依次点亮’,其实我没看懂这句话。是每隔一秒亮一个灯,还是。。。
更多追问追答
追问
每隔一秒亮一个灯,亮完8个灯就停止,不亮了
追答
二楼那个就是了呀
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单的!!几句话的事!!!
void main()
{
TMOD=0x21; //初始化定时器T0为工作方式
TH0=0x3c; //设定50ms计时初值
TL0=0xb0;
EA=1; //开总中断
ET0=1; //开T0中断
TR0=1; //启动T0定时器
while(1);
}
//名称:T0中断服务程序
void time0() interrupt 1
{
中断20次向下执行I/O移位就可以了
TH0=0x3c;//定时器重新赋值就可以了 TL0=0xb0;
}
void main()
{
TMOD=0x21; //初始化定时器T0为工作方式
TH0=0x3c; //设定50ms计时初值
TL0=0xb0;
EA=1; //开总中断
ET0=1; //开T0中断
TR0=1; //启动T0定时器
while(1);
}
//名称:T0中断服务程序
void time0() interrupt 1
{
中断20次向下执行I/O移位就可以了
TH0=0x3c;//定时器重新赋值就可以了 TL0=0xb0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询