单片机作业求解?
#include<reg51.h>sbitP1_0=P1^0;unsignedcharcounter=0;voidmain(void){TMOD=0x01;TH0=0xF...
#include<reg51.h>
sbit P1_0=P1^0;
unsigned char counter=0;
void main(void)
{
TMOD=0x01;
TH0=0xF0;
TL0=0x0F;
TR0=1;
ET0=1;
EA=1;
P1_0=0;
while(1);
}
void INETOP(void) interrupt 1 using0
{TH0=0xF0;TL0=0x0F;P1_0=1;counter++;
if(counter==10){P1=~P1;}}
void INEXOP(viod) interrupt 0 using1
{ P1_0=0; p1_0=0xFF;
if(counter==40)
return;}我找不出原因,望高手解决。。 展开
sbit P1_0=P1^0;
unsigned char counter=0;
void main(void)
{
TMOD=0x01;
TH0=0xF0;
TL0=0x0F;
TR0=1;
ET0=1;
EA=1;
P1_0=0;
while(1);
}
void INETOP(void) interrupt 1 using0
{TH0=0xF0;TL0=0x0F;P1_0=1;counter++;
if(counter==10){P1=~P1;}}
void INEXOP(viod) interrupt 0 using1
{ P1_0=0; p1_0=0xFF;
if(counter==40)
return;}我找不出原因,望高手解决。。 展开
1个回答
展开全部
第一,interrupt 0 是 外中断0的入口,程序中并没有开启外中断0使能(EX0),所以外中断函数无效。
第二,外中断函数里面的p1_0=0xFF;语法错误,p1_0 的 p 应该大写;P1_0是位定义,不能赋0xFF的值,除非你是想对 P1口赋值。
第三,这程序功能不明朗,如果是想每中断10次,就取反 P10 的状态,那就缺少一条 对 counter 清0 的语句。
第二,外中断函数里面的p1_0=0xFF;语法错误,p1_0 的 p 应该大写;P1_0是位定义,不能赋0xFF的值,除非你是想对 P1口赋值。
第三,这程序功能不明朗,如果是想每中断10次,就取反 P10 的状态,那就缺少一条 对 counter 清0 的语句。
追问
按要求编写程序:1.P1口连接8个LED灯,程序开始工作后,8个LED按照低4位亮、高4位灭;间隔0.5秒交替闪烁;2.0.5秒定时用定时器0(方式一)完成;3.P3.2口连接一个按键,当按下按键时,8个LED灯全亮2S(软件延时),然后恢复到正常闪烁状态;4.P3.2口的按键处理用外部中断0(INT0)完成。 呵呵 帮帮忙吧 我实在是想不出来了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询