找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机以8位逻辑电平开关K0~K7作为8位密码输入,设两路密码锁程序问题

查看数: 3430 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-5-30 19:53

正文摘要:

1.利用单片机设计一个简单的以8位逻辑电平开关K0~K7作为8位密码输入,设两路密码锁,第一路密码为10101010,第二路密码为11110000。2.以8个发光二极管作为输出,当输入的密码与第一路密码相同时,第一个发光二极管点 ...

回复

ID:517466 发表于 2019-5-30 22:53
按照你的代码
1、第一组密码不匹配的时候,B寄存器没有被设置;到第二组判断密码的时候,如果匹配,其后从B寄存器取值,那么这个值是什么值?
2、如果第一组密码匹配了,输出到8100H后,会继续执行第二组的密码判断。此时A寄存器中是0xFE,第二组密码不匹配,转LOOP。事实上,第一组密码如果匹配了,就没有必要执行第二组密码的判断。当第一组不匹配,执行第二组密码判断的时候,没有必要去做0xFE的判断,因为能走到第二组,第一组铁定不匹配。所以第二组如果匹配,可以直接输出0xFD到8100H。
修改如下
DATA_IN EQU  8000H
DATA_OUT EQU  8100H

    ORG    0100H
    MOV A,#0FFH
    MOV DPTR,#DATA_OUT
    MOVX @DPTR,A

LOOP:
    MOV DPTR,#DATA_IN
    MOVX A,@DPTR

    CJNE A,#10101010B,LOOP1
    ;匹配第一组密码,点亮Bit0对应的LED
    MOV DPTR,#DATA_OUT
    MOV A,#0FEH
    MOVX @DPTR,A
    SJMP LOOP

LOOP1:
    CJNE A,#11110000B,LOOP2
    ;匹配第一组密码,点亮Bit1对应的LED
    MOV A,#0FDH
    MOV DPTR,#DATA_OUT
    MOVX @DPTR,A
    SJMP LOOP
   
LOOP2:
    ;第一、二租密码都不匹配,点亮所有LED
    MOV A,#00H
    MOV DPTR,#DATA_OUT
    MOVX @DPTR,A
    SJMP LOOP

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表