📄 ledshow.lis
字号:
.module ledshow.c
.area text
; i -> 0,X
; str -> 3,X
0000 _lcdshow::
0000 A7FF ais #-1
0002 95 tsx
0003 ; /*文件描述:本文件包含了用HD44780显示相关的3个子程序 *
0003 ; * 1. LCDShow:在LCD上显示32个字符 *
0003 ; * 2. LcdInit:初始化Lcd *
0003 ; * 3. Lcd_Command:执行给定的cmd命令 *
0003 ; *-------------《嵌入式应用技术基础教程》--------------*/
0003 ; //[以下为子程序源代码]
0003 ; //[头文件]
0003 ; #include "GP32C.h" //包含头文件
0003 ; #include "clock.h"
0003 ; //内部调用子程序
0003 ; /*LcdShow:在HD44780显示屏上显示数据--------------------*
0003 ; *功能描述:在HD44780显示屏上显示str中的32个数据 *
0003 ; *参 数:str:待显示数组;以e标志结束 *
0003 ; *返 回:无 *
0003 ; *------------------以上为子程序说明-------------------*/
0003 ; void lcdshow(unsigned char str[])
0003 ; {
0003 ; unsigned char i=0;
0003 7F clr ,X
0004 ; //调用Lcd初始化子程序
0004 ; //显示第1行16个字符
0004 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
0004 1102 bclr #0,0x2
0006 ; LcdCtrl&=~(1<<LcdRW);
0006 1302 bclr #1,0x2
0008 ; Lcd_Command(0b10000000); //后7位为DDRAM地址0x00
0008 A680 lda #-128
000A 87 psha
000B CD0142 jsr _Lcd_Command
000E A701 ais #1
0010 95 tsx
0011 ; LcdCtrl|=1<<LcdRS; //RS、R/W=10,写数据到DDRAM中
0011 1002 bset #0,0x2
0013 ; LcdCtrl&=~(1<<LcdRW);
0013 1302 bclr #1,0x2
0015 2018 bra L3
0017 L2:
0017 3F00 clr *__r0
0019 F6 lda ,X
001A EB04 add 4,X
001C B700 sta *__r1
001E B600 lda *__r0
0020 E903 adc 3,X
0022 B700 sta *__r0
0024 5500 ldhx *__r0
0026 F6 lda ,x
0027 87 psha
0028 CD0142 jsr _Lcd_Command
002B A701 ais #1
002D 95 tsx
002E 7C inc ,X
002F L3:
002F ; while(str[i]!='E'&&i<16) //逐个显示
002F 3F00 clr *__r0
0031 F6 lda ,X
0032 EB04 add 4,X
0034 B700 sta *__r1
0036 B600 lda *__r0
0038 E903 adc 3,X
003A B700 sta *__r0
003C 5500 ldhx *__r0
003E F6 lda ,x
003F 95 tsx
0040 A145 cmp #69
0042 2705 beq L5
0044 F6 lda ,X
0045 A110 cmp #16
0047 25CE blo L2
0049 L5:
0049 ; {Lcd_Command(str[i]);i++;}
0049 ; if(str[i]=='E')i++;
0049 3F00 clr *__r0
004B F6 lda ,X
004C EB04 add 4,X
004E B700 sta *__r1
0050 B600 lda *__r0
0052 E903 adc 3,X
0054 B700 sta *__r0
0056 5500 ldhx *__r0
0058 F6 lda ,x
0059 95 tsx
005A A145 cmp #69
005C 2601 bne L6
005E 7C inc ,X
005F L6:
005F ; //显示第2行16个字符
005F ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
005F 1102 bclr #0,0x2
0061 ; LcdCtrl&=~(1<<LcdRW);
0061 1302 bclr #1,0x2
0063 ; Lcd_Command(0b11000000); //后7位为DDRAM地址0x40
0063 A6C0 lda #-64
0065 87 psha
0066 CD0142 jsr _Lcd_Command
0069 A701 ais #1
006B 95 tsx
006C ; LcdCtrl|=1<<LcdRS; //RS、R/W=10,写数据到DDRAM中
006C 1002 bset #0,0x2
006E ; LcdCtrl&=~(1<<LcdRW);
006E 1302 bclr #1,0x2
0070 2018 bra L9
0072 L8:
0072 3F00 clr *__r0
0074 F6 lda ,X
0075 EB04 add 4,X
0077 B700 sta *__r1
0079 B600 lda *__r0
007B E903 adc 3,X
007D B700 sta *__r0
007F 5500 ldhx *__r0
0081 F6 lda ,x
0082 87 psha
0083 CD0142 jsr _Lcd_Command
0086 A701 ais #1
0088 95 tsx
0089 7C inc ,X
008A L9:
008A ; while(str[i]!='E'&&i<32) //逐个显示
008A 3F00 clr *__r0
008C F6 lda ,X
008D EB04 add 4,X
008F B700 sta *__r1
0091 B600 lda *__r0
0093 E903 adc 3,X
0095 B700 sta *__r0
0097 5500 ldhx *__r0
0099 F6 lda ,x
009A 95 tsx
009B A145 cmp #69
009D 2705 beq L11
009F F6 lda ,X
00A0 A120 cmp #32
00A2 25CE blo L8
00A4 L11:
00A4 L1:
00A4 A701 ais #1
00A6 .dbline 0 ; func end
00A6 81 rts
00A7 ; i -> 0,X
00A7 ; AC -> 4,X
00A7 ; str -> 3,X
00A7 _lcdshow1::
00A7 A7FF ais #-1
00A9 95 tsx
00AA ; {Lcd_Command(str[i]);i++;}
00AA ; }
00AA ;
00AA ; void lcdshow1(unsigned char str,unsigned char AC)
00AA ; {
00AA ; unsigned char i;
00AA ; AC|=0b10000000;
00AA E604 lda 4,X
00AC AA80 ora #-128
00AE E704 sta 4,X
00B0 ; LcdCtrl|=(1<<LcdE); //E=1
00B0 1402 bset #2,0x2
00B2 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
00B2 1102 bclr #0,0x2
00B4 ; LcdCtrl&=~(1<<LcdRW);
00B4 1302 bclr #1,0x2
00B6 ; Lcd_Command(AC); //后7位为DDRAM地址
00B6 87 psha
00B7 CD0142 jsr _Lcd_Command
00BA A701 ais #1
00BC 95 tsx
00BD 7F clr ,X
00BE 2001 bra L16
00C0 L13:
00C0 L14:
00C0 7C inc ,X
00C1 L16:
00C1 ; for(i=0;i<250;i++); //延时>1.6ms
00C1 F6 lda ,X
00C2 A1FA cmp #-6
00C4 25FA blo L13
00C6 7F clr ,X
00C7 2001 bra L20
00C9 L17:
00C9 L18:
00C9 7C inc ,X
00CA L20:
00CA ; for(i=0;i<250;i++);
00CA F6 lda ,X
00CB A1FA cmp #-6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -