仿真原理如下图:
通过中断来控制流水灯的运作情况;代码如下:
#include<reg51.h>
#include<intrins.h>
sbit ex =P3^2;
unsigned char num=0;
unsigned char count=0;
unsigned char count1=0;
void init()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
IT0=1;
IT1=1;
TR0=1;
EX0=1;
EX1=1;
EA=1;
ex=1;
}
void display(){
if(count1==6){
count1=0;
}
}
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
void led()
{
int i=0;
for(i=0;i<8;i++)
{
P1=(0x01<<i);
delay(125);
}
}
void led1(){
int i=0;
for(i=0;i<8;i++)
{
P1=(0x80>>i);
delay(125);
}
}
void main()
{ init();
while(1)
{
display();
if(num%2!=0){
if(count1<3){
led();
}
else {
led1();
}
}
else{
P1=0x00;
P2=0x3f;
count1=0;
}
}
}
void interrupt0() interrupt 0
{
num++;
}
void Time_isr()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20){
count1++;
count=0;
}
}
全部资料51hei下载地址:
bw.zip
(64.98 KB, 下载次数: 19)
|