/*
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 亮
}
}
}
}
需要看你用的哪种单片机,晶振频率是多少的?原理上,比如计时器计时为500us溢出时,你再定义一个计数值,比如temp1=0,溢出时temp1++,当temp1>=2000时,改变P0口的输出就可以了。
汇编会 C不会
8LED是流水还是一起闪烁 ?