打印

一起来学LCD12864菜单程序(包含完整程序)

[复制链接]
楼主: fengyeu
手机看帖
扫描二维码
随时随地手机跟帖
21
燕南啸| | 2007-10-25 16:46 | 只看该作者 回帖奖励 |倒序浏览

牛人啊,汇编,现在看了就发晕

使用特权

评论回复
22
zhoushihua| | 2007-10-29 19:11 | 只看该作者

第一次来啊

我还没怎么接触到着方面的知识,以后回知道啊 

使用特权

评论回复
23
zhoushihua| | 2007-10-29 19:15 | 只看该作者

向你们学习

我是一初学者,我会加油的

使用特权

评论回复
24
王营光| | 2007-10-30 08:32 | 只看该作者

学习

我是新手,请多多指教

使用特权

评论回复
25
jjg| | 2007-10-30 17:13 | 只看该作者

我也用汇编遍过一个4级16层的菜单,感觉二个字:头痛.

选中菜单置顶.

使用特权

评论回复
26
tanchao| | 2007-10-30 18:05 | 只看该作者

汇编,偶像~

使用特权

评论回复
27
gavin_he| | 2007-10-31 09:42 | 只看该作者

LZ辛苦了, 不知是不是LZ大意了

;---------------------------- 菜单显示处理

DISPLAY_PRO:

    MOV   A,MENU_RAM

      MOV   DPTR,#MENUTAB_HOST

     RLC   A

     JMP   @A+DPTR


MENUNEXT:
     
     CALL   START_LCD
     
     CLR    LCDDISPLAY

     CLR    ONOFFLCD

    JMP    LCD_LOOP 


;-------------------------


MENUTAB_HOST:

     JMP    HOST_H           ;主菜单
     JMP    HOST_1           ;       1,控制
     JMP    HOST_2            ;       2,设置
     JMP    HOST_3              ;    3,智能
     JMP    HOST_4               ;  4,帮助



/******************************************************/




  散转处可能用 AJMP 或 LJMP 好些,  否则程序大了,可能有不预期的结果

使用特权

评论回复
28
xwj| | 2007-10-31 09:46 | 只看该作者

LS,这个不用担心吧?超出范围编译器会报错的!

使用特权

评论回复
29
xwj| | 2007-10-31 09:53 | 只看该作者

只不过呢,一个好的程序结构实在是太重要了

而且,再怎么说现在C都该是主流了

虽然偶有时候也用汇编写程序,但实在是懒得看汇编


如果如题头所说真的是:
初写时间:  2005年9月5日晚20时

那么就算程序写的再好,
作者都该拉出去打PiGu!!!

使用特权

评论回复
30
gavin_he| | 2007-10-31 10:02 | 只看该作者

回26楼 XWJ

据我所知, KEIL编译器里, JMP指令编译出来是AJMP或LJMP, 是编译器处理的,
散转的地方 AJMP 与 LJMP 是有区别的, 
不知对否?

使用特权

评论回复
31
xwj| | 2007-10-31 10:16 | 只看该作者

是的,编译器会自动选择,但这里如果自动选择就恰恰错了

AJMP 与 LJMP 行为差不多,周期长度也一样

但是!!!
AJMP是2字节指令,LJMP是3字节指令!

由于是用这种方式散装的:
DISPLAY_PRO:
    MOV   A,MENU_RAM
    MOV   DPTR,#MENUTAB_HOST
    RLC   A
     JMP   @A+DPTR

但JMP被自动替换成LJMP时就跳转出错了!

因此,这里宁愿用AJMP,最多万一不够远的话看编译器提示再二次跳转或调整下

使用特权

评论回复
32
xwj| | 2007-10-31 10:20 | 只看该作者

所以呢,汇编是把双刃剑,用得不好的话出些问题你查死了

除非刚好灵感来了,想到了真正的原因,
或者是运气好乱试试出来了:-)



使用特权

评论回复
33
gavin_he| | 2007-10-31 10:26 | 只看该作者

两种情况都搬出来


DISPLAY_PRO:
    MOV   A,MENU_RAM
    MOV   DPTR,#MENUTAB_HOST
    RL    A
    JMP   @A+DPTR

MENUTAB_HOST:
     JMP    HOST_H           ;主菜单
     JMP    HOST_1           ;       1,控制
     JMP    HOST_2            ;       2,设置
     JMP    HOST_3              ;    3,智能
     JMP    HOST_4               ;  4,帮助





DISPLAY_PRO:
    MOV   A,MENU_RAM
    MOV   DPTR,#MENUTAB_HOST
    RL    A
    ADD   A,MENU_RAM
    JMP   @A+DPTR

MENUTAB_HOST:
     LJMP    HOST_H           ;主菜单
     LJMP    HOST_1           ;       1,控制
     LJMP    HOST_2            ;       2,设置
     LJMP    HOST_3              ;    3,智能
     LJMP    HOST_4               ;  4,帮助

我看这样写就不用担心了, 
好久没用汇编, 凭印象改的

使用特权

评论回复
34
gavin_he| | 2007-10-31 10:29 | 只看该作者

SORRY, 前种情况是5个 AJMP

使用特权

评论回复
35
zhang123| | 2007-10-31 14:55 | 只看该作者

学习了 !

使用特权

评论回复
36
mcs_89c51| | 2007-10-31 15:42 | 只看该作者

真牛!

太多了,又没有硬件电路很难看懂。
60毫秒消抖是不是有点长了,一般12毫秒就OK了

使用特权

评论回复
37
fanguang| | 2007-10-31 23:26 | 只看该作者

用C写简单多哒呢,

使用特权

评论回复
38
hotpower| | 2007-10-31 23:40 | 只看该作者

还是少用JMP散转的好

使用特权

评论回复
39
ra_rabbit| | 2007-11-6 12:30 | 只看该作者

强啊

使用特权

评论回复
40
yjxlhh| | 2007-11-10 19:48 | 只看该作者

沙发? 那我先坐坐

    沙发?  那我先坐坐

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则