打印

让lcd显示A的汇编程序不知道哪里出错了

[复制链接]
568|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

这是电路图
ORG 1000H
RS EQU P0.7            
RW EQU P0.6              
E EQU  P0.5            
MOV P1,#00000001B      
ACALL  ENABLE           
MOV P1,#00111000B     
ACALL  ENABLE         
MOV P1,#00001111B     
ACALL  ENABLE         
MOV  P1,#00000110B   
ACALL  ENABLE           
MOV  P1,#0C0H
ACALL  ENABLE           
MOV P1,#01000001B   
SETB RS               
CLR RW               
CLR E                  
ACALL DELAY            
SETB  E                 
AJMP  $
ENABLE: CLR RS                    
        CLR RW
        CLR E ;Ìø±ä
        ACALL DELAY
        SETB E
        RET
DELAY:  MOV P1,#0FFH
        CLR RS
        SETB RW
        CLR E
        NOP
        SETB E
        JB P1.7,DELAY      
        RET
END

这是程序
求大佬帮忙给看看,已经查了一下午资料了,实在不知道怎么改了T^T。。。

使用特权

评论回复

相关帖子

沙发
sysharon|  楼主 | 2020-4-15 20:38 | 只看该作者

打开仿真后就是这个样子什么都没有

使用特权

评论回复
板凳
sysharon|  楼主 | 2020-4-15 20:52 | 只看该作者
木有人嘛T^T

使用特权

评论回复
地板
sysharon|  楼主 | 2020-4-16 10:13 | 只看该作者
本帖最后由 sysharon 于 2020-4-16 10:16 编辑

楼主我来更新了,上面那个问题已经解决,是因为我把芯片型号设置错了。。。。。
附上我自己写的代码,造福更多人
ORG 0000H
JMP START
ORG 0100H
START:  ACALL INIT
MAIN:   MOV A,#0C0H
                MOV P1,A
                ACALL ENABLE
        ACALL KEYSCAN
        MOV A,30H;
                MOV DPTR,#TABLE
                MOVC A,@A+DPTR
                MOV P2,A
                MOV A,30H
        MOV DPTR,#TABLE2
                MOVC A,@A+DPTR
                MOV P1,A
                SETB P0.7
                CLR P0.6
                CLR P0.5
                ACALL DELAY2
                SETB P0.5
                ACALL DELAY1
                LJMP MAIN
INIT:   MOV A,#00000001B
        MOV P1,A
                ACALL ENABLE
                MOV A,#00111000B
                MOV P1,A
                ACALL ENABLE
                MOV A,#00001111B
                MOV P1,A
                ACALL ENABLE
                MOV A,#00000110B
                MOV P1,A
                ACALL ENABLE
KEYSCAN:MOV P3,#0F0H
        MOV A,P3
        ANL A,#0F0H
                MOV R3,A
                MOV P3,#0FH
                MOV A,P3
                ANL A,#0FH
                ORL A,R3
                CJNE A,#0FFH,KEYPRO
                RET
KEYPRO: MOV R3,A
        MOV DPTR,#KEYVALUE
                MOV R4,#0FFH
KEY1:   INC R4     
        MOV A,R4
                MOVC A,@A+DPTR
                CJNE A,03H,KEY1
                MOV A,R4
                MOV 30H,A
DELAY1: MOV R6,#20H
DE2:    MOV R7,#100H
        DJNZ R7,$
                DJNZ R6,DE2
                RET
ENABLE: CLR P0.7
        CLR P0.6
                CLR P0.5
                ACALL DELAY2
                SETB P0.5
                RET
DELAY2: MOV P1,#0FFH
        CLR P0.7
                SETB P0.6
                CLR P0.5
                NOP
                SETB P0.5
                JB P1.7,DELAY2
                RET
KEYVALUE:DB 0E7H,0D7H,0B7H,077H,0EBH,0DBH,0BBH,07BH,0EDH,0DDH,0BDH,07DH,0EEH,0DEH,0BEH,07EH
TABLE:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
TABLE2:  DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H
END

使用特权

评论回复
评分
参与人数 1威望 +10 收起 理由
dirtwillfly + 10 很给力!
5
sysharon|  楼主 | 2020-4-16 10:22 | 只看该作者
还有一个问题,怎么写代码才能让lcd写入函数不在循环里面呢?
感觉我这样写不太稳定

使用特权

评论回复
6
yifeidengdai| | 2020-4-16 12:37 | 只看该作者
大侠  你好   你用的是什么仿真软件啊   有没有安装包发给我一个

使用特权

评论回复
评论
dirtwillfly 2020-4-18 20:10 回复TA
proteus,网上有很多的 
7
sysharon|  楼主 | 2020-4-18 17:49 | 只看该作者
本帖最后由 sysharon 于 2020-4-18 17:59 编辑
yifeidengdai 发表于 2020-4-16 12:37
大侠  你好   你用的是什么仿真软件啊   有没有安装包发给我一个

貌似文件太大传不上,你留个QQ邮箱

使用特权

评论回复
8
sysharon|  楼主 | 2020-4-20 20:36 | 只看该作者
学了中断和定时器之后很多问题解决方法都变得非常清晰。譬如上面我提的那个问题,只要加上中断,在有按键按下的时候对输入进行扫描,其他时候cpu停止工作,或者干别的事情,这样数据的输入就不用建立循环一直扫描入口,大大提升了cpu效率,改天贴上加上中断的代码

使用特权

评论回复
评论
dirtwillfly 2020-4-20 21:38 回复TA
正解。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

32

帖子

0

粉丝