
CLR P30
MOV R7,#00H
SETB P01
LOOP:
JNB P01,$ ;等待高电平输入,在程序运行前需要保证该引脚为低电平
INC R7 ;如果是按键输入,需要加入消抖程序:延时一段时间,再判断P01电平
CJNE R7,#3,LOOP1
SETB P30
JMP $
LOOP1:
JB P01,$
JMP LOOP
END
;改好了,可以编译。
;但是,编程的思路,可能还有错。
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP PINT0
ORG 0200H
MAIN:
MOV IE, #81H ;CPU开放中断,INT0允许中断
SETB IT0 ;外部中断为边沿触发方式
MOV SP, #30H ;指针入口地址
SETB P30
CLR P31
MOV P1, #0FFH ;使P1口全部置1
MOV P2, #00H ;P2口清零
CLR P12
LP:
JNB P10, LA ;监测输入信号,是否有输入信号
LA:
ACALL DELAY ;延时消抖
JNB P10, ALARM ;再次监测输入信号,若有输入信号转入报警子程序
AJMP LP
DELAY:
MOV R1, 0AAH
LD2:
MOV R2, 0BBH
LD1:NOP
DJNZ R2, LD1
DJNZ R1, LD2
RET
ALARM:
SETB P12 ;开始报警使运行正常绿指示灯熄灭,红灯和声报警启动
CPL P30
CPL P31
;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 P30 ;10s到关闭报警
CLR P31
CLR P12 ;报警结束,正常运行绿指示灯亮
LJMP LP ;循环, 继续工作
; 2 外部中断INTO服务程序:
PINT0:
CLR EX0 ;外部中断0服务程序开始,屏蔽外部中断
PUSH PSW
PUSH ACC
JNB P32, LN ;监测是否有中断输入
LN:
LCALL DELAY ;延时消抖
JNB P32, LN1
AJMP LN2 ;无中断输入, 中断返回
LN1:
SETB P30
CLR P31
CLR P12 ;使报警结束,绿指示灯亮
POP ACC
POP PSW
SETB EX0 ;开放外部中断0
LCALL LP ;在中断继续检测是否有输入信号
LN2:
RETI
END
程序如下:
;----------------------------------------
ORG 0000H
SJMP START
ORG 0023H
LJMP UART_INT
;----------------------------------------
START:
MOV SP, #60H
MOV SCON, #50H ;方式1,8-n-1
MOV TMOD, #20H
MOV TH1, #0FDH ;波特率设置
MOV TL1, #0FDH ;9600@110592MHz
SETB TR1
SETB ES ;开放中断
SETB EA
LOOP:
MOV A, P2 ;读出的拨码开关信息
DJNZ R7, $ ;延时
DJNZ R6, $ - 2
MOV B, P2 ;再读
CJNE A, B, LOOP ;消抖
MOV SBUF, A ;向串口发送
MOV P1, A ;在本机显示
JNB TI, $
CLR TI
SJMP LOOP
;----------------------------------------
UART_INT:
PUSH ACC
JB TI, U_EXIT
CLR RI
MOV A, SBUF ;读出串口收到的信息
MOV P0, A ;送P0口显示
U_EXIT: POP ACC
RETI
;----------------------------------------
END
当按钮按下或松开时,会向单片机CPU 输入一个0电平或1电平,CPU 根据接收到的0或1电不平信号,决定具体的 *** 作。但是,在在键的按下和松开时,开关的机械触点会产生抖动,一般抖动时间是5 ~10ms 左右,抖动的波形如图221在拉动期间CPU 不能按收到稳定的电平而无法作出正确的判断,因此,需在对按钮进行去抖动处理。

图221 按钮时,产生抖动的波形示意图
为了消除抖动,如图222所示,是利用反相器集成电路来实现消除抖动功能的。当开始按钮按下时,反相器的①端为低电平,尽管按下按钮会产生抖动,但由于反相器的作用,在②端会产生一个稳定的高电平。在按钮松开的过程中,由于①变为高电平,同样由于反相器的作用,在②端会产生一个稳定的低电平。停止消抖动电路原里一样。
CD4511译码器电路
硬件消抖电路
74LS14
程序控制芯片 AT89C51
模拟交通发光管电路,四路方向灯。三基色发光管8只 LED 四方向数码管
6MHZ 时钟电路
803与8051仿真切换电路
控制按钮
电源指示灯,CPU 指示灯电路
电源
以上就是关于请高手帮我用汇编语言做一个当P0.1脚下有3个高电平输入时,P3.0脚就输出高电平电程序全部的内容,包括:请高手帮我用汇编语言做一个当P0.1脚下有3个高电平输入时,P3.0脚就输出高电平电程序、单片机汇编问题、汇编语言设计甲机通过串口控制乙机LED闪烁程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)