1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。
2、#include "reg51.h"首先写出单片机的头函数。
3、#include "intrins.h"输入位移函数。
4、unsigned int count=0,led定义函数。
5、输入主函数,定义单片机的端口,写入延时函数。
6、中断跳转,使流水灯运行起来。
#include<reg52.h>#include <intrins.h>
void delayms(unsigned char ms) // 延时子程序
{
unsigned char i
while(ms--)
{
for(i = 0i <120i++)
}
}
main()
{
unsigned char LED
LED = 0xff
P0 = LED
while(1)
{
delayms(1000)
LED = LED<<1 //循环右移1位,点亮下一个LED
if(LED==0x00)
{
LED=0xff
}
P0 = LED
}
}
#include<reg52.h>#include <intrins.h>//包含有左右循环移位子函数的库
#define uint unsigned int
#define uchar unsigned char void delay(uint z) //延时函数,z的取值为这个函数的延时ms数
{
uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
void main() //主函数
{
uchar a,i,j
while(1)
{
for(j=0j<3j++) //寄偶交替
{
P1=0x55
delay(300)
P1=0xaa
delay(300)
}
for(j=0j<3j++)//流水灯
{
a=0xfe
for(i=0i<8i++)
{
P1=a
delay(300)
a=_crol_(a,1)
}
}
P1=0xff
for(j=0j<3j++) //从两边往中间流
{
P1=0x7e
delay(300)
P1=0xbd
delay(300)
P1=0xdb
delay(300)
P1=0xe7
delay(300)
}
P1=0xff
for(j=0j<3j++)//从中间往两边流
{
P1=0xe7
delay(300)
P1=0xdb
delay(300)
P1=0xbd
delay(300)
P1=0x7e
delay(300)
}
P1=0xff
for(j=0j<6j++)
{
P1=~P1
delay(300)
}
P1=0xff
}
}你试下行不行,是11.0592MHz的,时间上接近,但不精确的!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)