求大神帮忙把下面汇编程序改成c语言程序,万分感谢!

ORG 0000H
LJMP MAIN
ORG 0003H
LJMP PINT0
ORG 0200H
MAIN: MOV IE,#81H ;CPU开放中断,INT0允许中断
SETB IT0 ;外部中断为边沿触发方式
MOV SP,#30H ;指针入口地址
SETB P3.0
CLR P3.1
MOV P1,#0FFH ;使P1口全部置1
MOV P2,#00H ;P2口清零
CLR P1.2
LP: JNB P1.0,LA ;监测输入信号,是否有输入信号
LA: ACALL DELAY ;延时消抖
JNB P1.0,ALARM ;再次监测输入信号,若有输入信号转入报警子程序
AJMP LP
DELAY:MOV R1,0AAH
LD2:MOV R2,0BBH
LD1:NOP
DJNZ R2,LD1
DJNZ R1,LD2
RET
ALARM:SETB P1.2 ;开始报警使运行正常绿指示灯熄灭,红灯和声报警启动
CPL P3.0
CPL P3.1
;10S钟定时:
MOV 51H,#14H ;10S循环次数
MOV TMOD,#01H ;定时器T0定时 方式1
MOV TL0,#0B0H ;置50ms定时初值
MOV TH0,#3CH
SETB TR0 ;启动T0
L2:JBC TF0,L1 ;查询记数溢出
SJMP L2
L1:MOV TL0 #0B0H
MOV TH0 #3CH
DJNZ 51H,L2 ;未到10S继续循环
SETB P3.0 ;10s到关闭报警
CLR P3.1
CLR P1.2 ;报警结束,正常运行绿指示灯亮
LJMP LP ;循环,继续工作

2. 外部中断INTO服务程序:
PINT0: CLR EX0 ;外部中断0服务程序开始,屏蔽外部中断
PUSH PSW
PUSH ACC
JNB P3.2,LN ;监测是否有中断输入
LN: LCALL DELAY ;延时消抖
JNB P3.2,LN1
AJMP LN2 ;无中断输入,中断返回
LN1: SETB P3.0
CLR P3.1
CLR P1.2 ;使报警结束,绿指示灯亮
POP ACC
POP PSW
SETB EX0 ;开放外部中断0
LCALL LP ;在中断继续检测是否有输入信号
LN2: RETI
END

第1个回答  2014-05-17
其实一个完整的产品是没有这么去写程序的,一般是用时间片轮寻方式,没有人用死循环去检测输入的!并且要一些程序复位和初始化的相关程序,要清RAM!这个大概是书上教你怎么认识指令和单片机结构的程序。要写一更程序主要是要有一个方法!我可以给你一个模板,你留下联系我发你!这个翻译成C也可以,只是没多大意义!追问

用户名就是我qq号
你把他发给我吧,谢谢啦,,也拜托把这个程序翻译成c语言参考一下,,谢谢了,烧程序要用C语言烧

第2个回答  2014-05-17
这汇编程序,是错误的。追问

可以告诉一下咋错的吗?

追答

结构混乱。

SETB EX0 ;开放外部中断0
LCALL LP ;在中断继续检测是否有输入信号

---------调用子程序。
---------但是,LP,并不是子程序

LN2: RETI
END

还有一些。

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网