跪求51程序模板,功能按键1执行A程序,按键2执行B程序,按键3执行C程序,按键4中断,再按继续

跪求51程序模板,功能按键1执行A程序,按键2执行B程序,按键3执行C程序,按键4中断,再按继续,第1张

按键1,2,3分别接3个io口(p1.0-p1.2),假设按键按下时io口输入低电平,按键4接外部中断0,设其低电平触发,你说的按键4进中断,进去之后呢,执行什么?

#include<reg51.h>

void proga()//声明程序a

void progb()//声明程序b

void progc()//声明程序c

sbit a=P1^0

sbit b=P1^1

sbit c=P1^2

void main()

{

EA=1//开总中断

EX0=1//开外部中断0

IT0=0//外部中断0设为低电平触发

while(1)

{

if(!a)

{

proga()

}

if(!b)

{

progb()

}

if(!c)

{

progc()

}

}

}

void proga() //定义程序a

{

}

void progb() //定义程序b

{

}

void progc() //定义程序c

{

}

int0() interrupt 0 //中断程序

{

}

这是最简单的,给你参考:

#include<reg51.h>

sbit LED=P1^0

//程序一:LED闪亮

void delay()

{

unsigned char i,j

for(i=0i<255i++)

for(j=0j<255j++)

}

void main()

{

while(1)

{

LED=0

delay()

LED=1

delay()

}

}

你好:

如果你想直接知道答案,那么我告诉你,12MHz晶振:

void delayms(unsigned int t)

{

unsigned int i,j

for(i=ti>0i--)

for(j=123j>0j--)

}

能精确到1ms。

如果是11.0592MHz晶振,只需把上面的“j=123”改为“j=114”,都是调试过的,没问题。

然后你要想知道是怎么调试的,很简单,打开uv2编程软件,在最上边的工具栏里边有个“Debug”,点击后出现下拉菜单,选择第一个“start/stop Debug Session”,然后在最右边有一个Watch栏,有两个项目,一个是“Register”,一个是“value”,然后在“Register”栏下边的“Sys”里边有个“sec”,你只要单击“Step over”运行程序并观察“sec”的值就能调试出你程序的执行时间了。

注意,一定要先选择晶振频率,不然会默认24MHz。

希望我的回答能帮助到你。你好:

如果你想直接知道答案,那么我告诉你,12MHz晶振:

void delayms(unsigned int t)

{

unsigned int i,j

for(i=ti>0i--)

for(j=123j>0j--)

}

能精确到1ms。

如果是11.0592MHz晶振,只需把上面的“j=123”改为“j=114”,都是调试过的,没问题。

然后你要想知道是怎么调试的,很简单,打开uv2编程软件,在最上边的工具栏里边有个“Debug”,点击后出现下拉菜单,选择第一个“start/stop Debug Session”,然后在最右边有一个Watch栏,有两个项目,一个是“Register”,一个是“value”,然后在“Register”栏下边的“Sys”里边有个“sec”,你只要单击“Step over”运行程序并观察“sec”的值就能调试出你程序的执行时间了。

注意,一定要先选择晶振频率,不然会默认24MHz。

希望我的回答能帮助到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11560294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存