导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→是否显示电路出了问题?

* 41336: 我这儿有一小段汇编程序,请大家帮我看看

   musica 
musica发表的帖子 

 是否显示电路出了问题?
ram中有回送值,说明键盘没问题,硬件显示电路查了没有?很可能再线多的地方出错。其次你的程序太长,有冗余,我这有简洁一点的,上传给你,希望能帮上一点忙。我说要先查硬件部分哦。

org 0000h
ljmp start
org 0100h
start:mov  sp,#60h
      mov dptr,#szlg     ;8279的初始化
      mov a,#0d1h      ;1101,0001 ca位总清除,显示ram都置0
      movx @dptr,a     ;清显示器,清fifo
      nop
      nop
loop: movx a,@dptr     ;读状态字
      jb   acc.7,loop  ;当最高位为1时,表明还没有清完显示器ram
      mov  a,#34h      ;当清完时,开始分频
      movx @dptr,a      ;五分频
      mov  a,#00h       ;000,10,000 右端输入,8字符显示。
      mov  r1,#40h
      movx  @dptr,a
main: jb   p3.3,main   ;这里永乐int1作irq检测
      lcall key
      sjmp main

;键盘子程序,16键输入,6led显示人机接口
key:  mov  dptr,#szlg
      mov  a,#40h       ;010,00000写‘读扫描键值命令’,按键顺序读取,fifo
      movx @dptr,a
      mov  dptr,#dzlg     ;数据口地址
      movx a,@dptr      ;读扫描键值,从fiforam送数据口,8字节,顺序读取
      anl  a,#3fh       ;取低六位,高三位为扫描码,低三位为回送码,均为编码值
      mov  dptr,#ktab   ;有序数编码转换表首址
      movc a,@a+dptr    ;查出实际数字0-----f
      mov  @r1,a
      inc  r1
      mov  r0,#30h      ;r0作键值寄存器指针
      mov  r2,#8
data1:xch  a,@r0        ;将键值暂存30单元---x8
      inc  r0
      djnz r2,data1
      lcall dir
      ret

;显示子程序
  dir:setb rs1
      mov  dptr,#szlg     ;写显示命令
      mov  a,#90h       ;1001,0000
      movx @dptr,a      ;ram 地址初值为0000,自加方式
      mov  p2,#7fh      ;这两条指令给了显示地址
      mov  r1,#0feh
      mov  dptr,#dtab   ;将实际数转成显示码,赋首址
      mov  r7,#8
      mov  r0,#30h
 dir1:mov  a,@r0        ;将键值送a
      movc a,@a+dptr
      movx @r1,a        ;得到相应显示码
      inc  r0           ;指向下一码值
      djnz r7,dir1
      clr  rs1
      ret

;dtab:显示码表
dtab: db 3fh,06h,5bh,4fh    ;1,2,3,4
      db 66h,6dh,7dh,07h    ;4,5,6,7
      db 7fh,6fh,77h,80h    ;8,9,a(*),b(.)
      db 39h,5eh,79h,71h    ;c,d,e,f(#)
      db 00h
;ktab:键码转换表
ktab: db 01h,01h,01h,01h,01h,01h,01h,01h
      db 02h,02h,02h,02h,02h,02h,02h,02h
      db 03h,03h,03h,03h,00h,00h,00h,00h
      db 04h,04h,04h,04h,00h,00h,00h,00h


end
                                                                 ---- musica




发表时间:2003年9月2日20:14:09

  
回复该帖

本主题共有 29 帖,分页:>>>>>该主题的所有内容[29]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  41339.[详细]有些开发系统工作长时间也会出现这种问题,可以关闭开发系统系统电源,过一会在开机试一试吧...
摘要:有些开发系统工作长时间也会出现这种问题,可以关闭开发系统系统电源,过一会在开机试一试吧.......(85字)
- [singleclare][904次] 2003年9月2日

  41338.[详细]是不是开发系统的问题?
摘要:是不是开发系统的问题?......(21字)
- [singleclare][1075次] 2003年9月2日

  41350.[详细]谢谢,我试试
摘要:谢谢,我试试......(12字)
- [石月][962次] 2003年9月3日

[上一篇帖子]:是不是开发系统的问题?
[下一篇帖子]:可能可能是内部RAM有冲突,也就是应该保存的数值没有保存,或者是你的程序中断中应该压栈的寄存器没有压