请高手帮我用汇编语言做一个当P0.1脚下有3个高电平输入时,P3.0脚就输出高电平电程序

请高手帮我用汇编语言做一个当P0.1脚下有3个高电平输入时,P3.0脚就输出高电平电程序,第1张

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闪烁程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10167727.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存