求一段判断汇编语言程序

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:17:56
求一段汇编语言程序,功能如下:AT89C2051 12M
从P3口输入一个信号,当信号为常低时(>200mS).从P1口输出报警(发光二极管连续闪烁或亮着,最好都有程序).
求各位高手帮忙.
C转汇编语言不太会啊,谁能给个汇编语言的啊!
报警我会,就是前面的判断不太懂.

这个程序我调试过了,没问题,但我的晶振和单片机的时钟周期和你的不一样,所以你只需要把延时改下就可以了,具体多少你算下吧,不能不会算这个吧
check_bit就是你P3口的一位

bit check_bit(void)
{
unsigned int i;
if(check_bit==1)

{
return (1);//为高什么也不做
}

else

{
for(i=0;i<1500;i++)//延时稍大于200ms就行了。
{
if (check_bit==1)//在200ms内出现高也什么都不做。
return (1);
}
return (0);//程序执行到这时低电平就一定大于200ms了

}
}
如果这个程序返回1就说明输入的为高电平,不用管,而返回0时就证明有大于200ms的低电平,这时你调下报警程序就可以了。
程序虽小,也花了我一定时间去想呢。有问题再给我发消息吧,很乐意帮忙。
你直接调用它就行了,把它当个子程序用

;这也是一个子程序,用来调用
check_bit bit p3.0 ;随便一个IO都可以

JNB check_bit,NEXT
SETB F0
SJMP BACK
NEXT:加一段你想要的延时时间(延时会编吧)
并时刻判断 check_bit的状态,(判断条件在延时内部)
在规定时间内变为1,不符合你
的要求就
SETB F0
SJMP BACK
如果超过你的延时还没变为高(完成延时后了),那
就说明符合你的要求(假如延时大于200ms)
CLR F0
BACK;RET
你仔细看下,和C的结构其实是一样的,就是指令不一样了而已。
最后判断F0的值是什