八个led灯用P0口控制。led负极接单片机。怎样用定时器写出让led闪烁的?时间为一秒。急。求c语言程序。单

2025-03-01 20:12:09
推荐回答(4个)
回答1:

/*
1. 假设 单片机输出低电平(0) LED 亮;
2. 假设晶振为12M,则计数器 计数一次则为1uS;
3. 假设你说的LED是一排(8个)都接在单片机P0口;
4. 假设你说的是8个都同时亮,同时灭;
5. 假设你说的是 亮 1S 然后再灭 1S 再亮 1S.....;
6. 假设P0 口加了上拉电阻;
*/
#include
#define uchar unsigned char
char a = 0;

void T0int( ) interrupt 1
{
TH0 = (65536-65535)/256;
TL0 = (65536-64536);
a = a+1;
}

void T0init( )
{
TMOD=0x01;//设置定时器0为工作方式1,

TH0=(65536-65536)/256;

TL0=(65536-64536)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0
}

void main( )
{
P0 = 0XFF; // LED 灭状态;
T0init();
while(1)
{
P0 = 0XFF; // 一开始 LED 灭;
if(a==1000) // 1秒动作一次
{
a = 0;
while(1000-a)
{
P0 = 0X00; //LED 亮
}
}
}
}

回答2:

需要看你用的哪种单片机,晶振频率是多少的?原理上,比如计时器计时为500us溢出时,你再定义一个计数值,比如temp1=0,溢出时temp1++,当temp1>=2000时,改变P0口的输出就可以了。

回答3:

汇编会 C不会

回答4:

8LED是流水还是一起闪烁 ?