ckvlhf 发表于 2009-3-13 19:26

来点另类的

刚学51不久,汇编这几天才开始。下面来个练手的。开始用C写的,就这么两行字居然占了400字节,看来C编小程序没有优势呀!昨天用汇编写了一个,200多字节,想着想着还是不爽,今天琢磨着优化了一下,一开始是126字节,接着124、123,最后115了。实在是压榨不了它了,哪位高手来支支招,看还能缩减不?
附上最终的源程序:
    EN    BIT   P1.2
    RW    BIT   P1.1
          RS    BIT   P1.0
                ORG   0000H
                LJMPSTART
START:          MOV   SP,#60H
LCDINT:         CLR   RW;没有读这一操作,所以读写标志位常设为写
                CLR   RS      ;写指令
                MOV   A,#01H    ;清屏
                ACALL WRBYT
LOOP:         CLR   RS      ;写指令
                MOV   A,#38H    ;8位总线方式,双行5*7点阵字符
                ACALL WRBYT
                MOV   A,#06H    ;设置文字不移动
                ACALL WRBYT   
                MOV   A,#0CH    ;开显示,无光标,不闪烁
                ACALL WRBYT   ;
                MOV   A,#80H    ;写第一行起始地址
                ACALL WRBYT   
                SETBRS      ;写数据
    MOV   DPTR,#CHR1;调第一行字符串首地址
    LCALL WRITE
    CLR   RS;写指令
    MOV   A,#0C0H ;第二行起始地址
    ACALL WRBYT
    SETBRS;写数据
    MOV   DPTR,#CHR2;调第二行字符串首地址
    LCALL WRITE
    LJMPLOOP
WRITE:          MOV   R3,#16
WCHAR:          MOV   A,#0
    MOVC   A,@A+DPTR;调对应位置字符内容
    ACALL WRBYT;把调用的字符写入LCD
    INC   DPTR;字符地址加1
                DJNZR3,WCHAR ;如果这一行没有写完,返回到WRCHR继续写。
    RET
WRBYT:          LCALL DELLAY
                MOV   P0,A
    SETBEN
    CLR   EN
    RET
DELLAY:         MOV   R4,#20
                DJNZR4,$
    RET
CHR1:         DB " Hi! welcome to "
CHR2:         DB "www.shoudian.org"
                END

njwj82 发表于 2009-3-13 19:29

牛X,哈哈

ckvlhf 发表于 2009-3-13 19:46

把能缩减的都缩减了,读忙操作砍掉,延时也尽量缩短,这样在复位的时候基本看不到屏幕的闪烁。
下一步,让它动起来!

发烧友 发表于 2009-3-13 20:51

我很想搞个1802显示屏玩玩

ckvlhf 发表于 2009-3-13 21:28

原帖由 发烧友 于 2009-3-13 20:51 发表 http://www.shoudian.org/images/common/back.gif
我很想搞个1802显示屏玩玩
你可以拿你的透镜手电和我换

我爱冬天 发表于 2009-3-13 21:40

SNAKELB 发表于 2009-3-13 23:01

看看

djliubo 发表于 2009-3-14 10:19

这是源程序吧,编译后体积会变化的啊!

海天 发表于 2009-3-14 10:31

又见牛人。

ckvlhf 发表于 2009-3-14 11:49

原帖由 djliubo 于 2009-3-14 10:19 发表 http://www.shoudian.org/images/common/back.gif
这是源程序吧,编译后体积会变化的啊!
我说的当然是指编译后的了。
页: [1]
查看完整版本: 来点另类的