单片机中断,定时/计数器实验

1P1口P1。1~P1。7接八个LED灯L0~L7。分别用查询方式,中断方式编写一程序,使八个LED灯轮流点亮。2P1口P1.0—P1.7接八个LED灯L0—L7,编一程... 1 P1口P1。1~P1。7接八个LED灯L0~L7。分别用查询方式,中断方式编写一程序,使八个LED灯轮流点亮。2 P1口P1.0—P1.7接八个LED灯L0—L7,编一程序,使P1口上八个LED灯,当INT0中断一次,计数一次. 展开
 我来答
匿名用户
2013-05-09
展开全部
/*-----------------------------------------------
名称:流水灯
------------------------------------------------*/
#include<reg52.h> //包含头文件
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
P1=0xfe; //给初始化值 换算成二进制是1111 1110
while(1)
{
delay(25000);//延时程序
P1<<=1; //左移一位 该语句等效于 P1=P1<<1
P1|=0x01; //最后一位补1,该语句等效于 P1=P1|0x01 符号"|"表示"或"
if(P1==0x7f) //检测是否移到最左端?"=="表示检测符号2端的值是否相等
{
delay(25000);
P1=0xfe; //重新赋值
}
}
} /*-----------------------------------------------
定时器0
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED=P1^2; //定义LED端口void delay(unsigned int cnt)
{
while(--cnt);
}/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
Init_Timer0();
int i=0x00;
while(1){
P1=i;
}
}/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00; //重新赋值
TL0=0x00;
i<<=1;
i|=0x01;
if(i==0x7f)
{
delay(25000);
i=0xfe;
}
} /*-----------------------------------------------
外部中断0电平触发------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
主程序
------------------------------------------------*/main()
{
P1=0x00; //P1口初始值
EA=1; //全局中断开
EX0=1; //外部中断0开
IT0=0; //电平触发
while(1)
}
/*------------------------------------------------
外部中断程序
------------------------------------------------*/
void ISR_Key(void) interrupt 0 using 1
{
P1++;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式