No.104602 作者:justinzheng 邮件:zhf826@gmail.com ID:72841 登陆:10次 文章数:3篇 最后登陆IP:218.79.110.3 最后登陆:2008/2/12 17:01:49 注册:2007/3/27 16:28:44 财富:118 发帖时间:2007/4/12 21:10:44 发贴者IP:218.79.114.17 标题:justinzheng:关于1602和x5045的一个程序求助 摘要:No.104602关于1602和x5045的一个程序求助 有哪位好心人能够帮忙看看这个程序有什么问题瓦,其目的是为了实现,从键盘上按一个键,在1602上显示。 同时保存到x5045中,按另外一个键的时候能够从x5045中读出。我现在能够显示,但是读出的总是乱字。谢谢好心然帮忙啊!! RS BIT P3.3 ;寄存器选择,1表示数据寄存器,0表示指令寄存器 RW BIT P3.5 ;读写信号线,高电平为读,低电平为写, ;RS RW同时为低表示写指令,RS低RW高则是读忙信号,反之写入数据 E BIT P3.4 ;液晶显示使能,高到低时执行命令 key_bit bit 01h ;键盘标志位 keyboard bit P2.6 lcd_bg bit P1.2 ;背光 output equ p0 cs bit p2.7 ;x5045电路选择端 so bit p3.5 ;x5045串行数据输入端 si bit p3.7 ;x5045串行数据输出端 sclk bit p3.6 ;x5045串行时钟信号 mrd equ 2ch ;接收数据缓冲区 numbyt equ 2fh ;传送字节数存放单元 org 0000h ajmp init org 0003h ajmp ankey init: mov sp,#0f0h clr lcd_bg mov b,#01h ;清屏 lcall enable ;每次操作都要保存 mov b,#38h ;功能选择 lcall enable mov b,#0eh ;开显示幕 lcall enable mov b,#06h ;表示光标向右移,屏幕上文字不移动 lcall enable setb ea ;中断开放 setb ex0 ;允许INT0 welcome: mov b,#80h ;设定第一行起始地址 lcall enable mov a,#41h lcall display main: jnb key_bit,next clr key_bit ajmp key next: nop ajmp main ;-----------------写入程序寄存器-------------------------- enable:clr rs ;写指令到寄存器 clr rw clr e ;先禁止,在第二次进入的时候就有效了 lcall delay mov output,b setb e clr e ret ;----------------显示------------------------------------- display: clr rw setb rs mov output,a setb e lcall delay clr e ret ;****************x5045************************************ ;----------------单字节写--------------------------------- ;作用:这段程序送出命令,读EEPROM存储器中的一个字节数据 byte_write: mov dptr,#0e0h ;设置字节写地址 byte_writ1: lcall wren clr sclk clr cs ;启动x5045 mov a, DPL lcall byte_out ; 送出8位地址 mov a,#mrd ; 数据 lcall byte_out ; 送出数据 clr sclk ; 关闭x5045 setb cs lcall check_wip ; 查写周期是否完成(等待写完) ret ;---------------单字节读----------------------------------- ;作用:这段程序送出命令 ......
>>返回讨论的主题
|