📄 lcd.asl
字号:
+ 1 ;*###################################################;
+ 2 ;company:cansum writed by:he qigrang
+ 3 ; date:2004-7-2
+ 4 ;
+ 5 ;####################################################;
+ 6
+B 00 01
+ 7 .area display_var(data)
+ 8
+ 9 ;===============================;以下的都是临时寄存器,可释放的。
+ 10 ;-------------------------------;十进制数
0000 11 h_temp0:: .ds 1 ;要显示的低位
0001 12 h_temp1:: .ds 1 ;要显示的中位
0002 13 h_temp2:: .ds 1 ;要显示的高位
+ 14 ;------------------------------difine RAM(DISPLAY)
0003 15 h_dis_ram0:: .ds 1
0004 16 h_dis_ram1:: .ds 1
0005 17 h_dis_ram2:: .ds 1
0006 18 h_dis_ram3:: .ds 1
0007 19 h_dis_ram4:: .ds 1
+ 20 ;------------------------------
0008 21 adrptr:: .ds 2
000A 22 temp0:: .ds 1
000B 23 temp1:: .ds 1
000C 24 temp2:: .ds 1
+ 25 ;===============================;
+B 00 02
+ 26 .area display_code(code)
+ 27
0000 28 lcd_display::
0000 20 00 0D 29 call h_clr_dis_ram ;清除显存
0003 20 00 1A 30 call h_x_to_a ;16进制变为10进制
0006 20 00 6A 31 call h_check_table ;查表得到显示数据
0009 20 01 2C 32 call h_dis_all ;把数据送到显存
000C 24 33 ret
+ 34 ;***************************************;
000D 35 h_clr_dis_ram:
000D F3 00 36 lda #0
000F FD 03 37 sta h_dis_ram0
0011 FD 04 38 sta h_dis_ram1
0013 FD 05 39 sta h_dis_ram2
0015 FD 06 40 sta h_dis_ram3
0017 FD 07 41 sta h_dis_ram4
0019 24 42 ret
+ 43 ;****************************************;
+ 44 ;有个转换公式的(可以把程序写得好短),但我忘了,
+ 45 ;又查不到资料,我就是差的。现用了最笨的方法,。
+ 46 ;-----------------------------------------
001A 47 h_x_to_a:
001A F1 00 48 lda cnt_point
001C FD 0A 49 sta temp0
001E F1 01 50 lda cnt_point+1
0020 FD 0B 51 sta temp1
0022 F3 00 52 lda #0
0024 FD 00 53 sta h_temp0
0026 FD 01 54 sta h_temp1
0028 FD 02 55 sta h_temp2
002A 56 h_x_to_a_1:
002A F1 0A 57 lda temp0
002C A7 0A 58 cmpe #10 ;低位是小于十吗?
002E 05 00 4B 59 brnc h_x_to_a_2
+ 60 ;lda temp0
0031 AB 0A 61 suba #10
0033 FD 0A 62 sta temp0
0035 F1 01 63 lda h_temp1
0037 1F 64 inca
0038 FD 01 65 sta h_temp1
003A A7 0A 66 cmpe #10
003C 05 00 2A 67 brnc h_x_to_a_1
+ 68 ;lda h_temp1
003F AB 0A 69 suba #10
0041 FD 01 70 sta h_temp1
0043 F1 02 71 lda h_temp2
0045 1F 72 inca
0046 FD 02 73 sta h_temp2
0048 02 00 2A 74 br h_x_to_a_1
004B 75 h_x_to_a_2:
004B F1 0B 76 lda temp1
004D A7 00 77 cmpe #0
004F 06 00 65 78 brz h_x_to_a_3
0052 F1 01 79 lda h_temp1
0054 1F 80 inca
0055 FD 01 81 sta h_temp1
0057 F3 F6 82 lda #246
0059 89 0A 83 adda temp0
005B FD 0A 84 sta temp0
005D F1 0B 85 lda temp1
005F 3F 86 deca ;高位减一
0060 FD 0B 87 sta temp1
0062 02 00 2A 88 br h_x_to_a_1
0065 89 h_x_to_a_3:
0065 F1 0A 90 lda temp0
0067 FD 00 91 sta h_temp0
0069 24 92 ret
+ 93
+ 94 ;*******************************************;
+ 95 ;*******************************************;
+ 96
006A 97 h_check_table:
006A F1 02 98 lda h_temp2 ;求高位的表值数
006C A7 00 99 cmpe #0 ;如高位是零,不用显示
006E 06 00 7E 100 brz h_dis_middle
0071 FD 0A 101 sta temp0
0073 20 00 CE 102 call h_get_table
0076 F1 0A 103 lda temp0
0078 FD 03 104 sta h_dis_ram0
007A F1 0B 105 lda temp1
007C FD 04 106 sta h_dis_ram1
007E 107 h_dis_middle:
007E F1 01 108 lda h_temp1
0080 A7 00 109 cmpe #0
0082 06 00 88 110 brz h_check_high
0085 02 00 8F 111 br h_dis_middle1
0088 112 h_check_high:
0088 F1 02 113 lda h_temp2
008A A7 00 114 cmpe #0
008C 06 00 BE 115 brz h_dis_low
008F 116 h_dis_middle1:
008F F1 01 117 lda h_temp1 ;求中间位的表值
0091 FD 0A 118 sta temp0
0093 20 00 CE 119 call h_get_table
0096 F1 0A 120 lda temp0
0098 8B 00 121 adda #0 ;clear cy
009A 7E 122 rolc ;左移四位
009B 7E 123 rolc
009C 7E 124 rolc
009D 7E 125 rolc
009E CB F0 126 anda #11110000b
00A0 D9 04 127 ora h_dis_ram1
00A2 FD 04 128 sta h_dis_ram1
00A4 F1 0A 129 lda temp0
00A6 8B 00 130 adda #0 ;clear cy
00A8 7F 131 rorc ;右移四位
00A9 7F 132 rorc
00AA 7F 133 rorc
00AB 7F 134 rorc
00AC CB 0F 135 anda #00001111b
00AE FD 05 136 sta h_dis_ram2
00B0 F1 0B 137 lda temp1
00B2 8B 00 138 adda #0 ;clear cy
00B4 7E 139 rolc ;左移四位
00B5 7E 140 rolc
00B6 7E 141 rolc
00B7 7E 142 rolc
00B8 CB F0 143 anda #11110000b
00BA D9 05 144 ora h_dis_ram2
00BC FD 05 145 sta h_dis_ram2
00BE 146 h_dis_low:
00BE F1 00 147 lda h_temp0 ;求低位的表值
00C0 FD 0A 148 sta temp0
00C2 20 00 CE 149 call h_get_table
00C5 F1 0A 150 lda temp0
00C7 FD 06 151 sta h_dis_ram3
00C9 F1 0B 152 lda temp1
00CB FD 07 153 sta h_dis_ram4
00CD 24 154 ret
+ 155 ;=====================================;
+ 156 ;intput:temp0
+ 157 ;output:temp0,temp1
+ 158 ;-------------------------------------
00CE 159 h_get_table:
00CE F3 01 160 lda #>(h_table) ;送表头值
00D0 FD 09 161 sta adrptr+1
00D2 F3 18 162 lda #<(h_table)
00D4 FD 08 163 sta adrptr
00D6 164 h_getnum:
00D6 F1 0A 165 lda temp0 ;
00D8 A7 00 166 cmpe #0
00DA 06 00 F1 167 brz h_ready
00DD F1 0A 168 lda temp0
00DF 3F 169 deca
00E0 FD 0A 170 sta temp0
+ 171
00E2 F1 08 172 lda adrptr
00E4 8B 02 173 adda #2
00E6 FD 08 174 sta adrptr
00E8 F3 00 175 lda #0
00EA 99 09 176 addc adrptr+1
00EC FD 09 177 sta adrptr+1
00EE 02 00 D6 178 br h_getnum
00F1 179 h_ready:
00F1 F1 09 180 lda adrptr+1
00F3 FC 02 181 sta tph
00F5 F1 08 182 lda adrptr
00F7 FC 01 183 sta tpl
00F9 184 h_ready_ok:
00F9 F0 22 185 lda r_op1
00FB CB 80 186 anda #10000000b
00FD 06 00 F9 187 brz h_ready_ok
0100 F8 188 ldv
0101 FD 0A 189 sta temp0
0103 F1 08 190 lda adrptr
0105 1F 191 inca
0106 FD 08 192 sta adrptr
0108 F3 00 193 lda #0
010A 99 09 194 addc adrptr+1
010C FD 09 195 sta adrptr+1
010E FC 02 196 sta tph
0110 F1 08 197 lda adrptr
0112 FC 01 198 sta tpl
0114 F8 199 ldv
0115 FD 0B 200 sta temp1
0117 24 201 ret
0118 202 h_table:
0118 56 03 203 db 01010110b,00000011b ;0
011A 00 03 204 db 00000000b,00000011b ;1
011C 74 01 205 db 01110100b,00000001b ;2
011E 70 03 206 db 01110000b,00000011b ;3
0120 22 03 207 db 00100010b,00000011b ;4
0122 72 02 208 db 01110010b,00000010b ;5
0124 76 02 209 db 01110110b,00000010b ;6
0126 10 03 210 db 00010000b,00000011b ;7
0128 76 03 211 db 01110110b,00000011b ;8
012A 72 03 212 db 01110010b,00000011b ;9
+ 213 ;=========================================;
+ 214 ;*****************************************;
+ 215 ;*****************************************;
012C 216 h_dis_all: ;送到真正的显存
012C F1 03 217 lda h_dis_ram0
012E FD F0 218 sta 0f0h
0130 F1 04 219 lda h_dis_ram1
0132 FD F1 220 sta 0f1h
0134 F1 05 221 lda h_dis_ram2
0136 FD F2 222 sta 0f2h
0138 F1 06 223 lda h_dis_ram3
013A FD F3 224 sta 0f3h
013C F1 07 225 lda h_dis_ram4
013E FD F4 226 sta 0f4h
0140 24 227 ret
+ 228 ;****************************************;
+
+Symbol Table
+
+ 1 adrptr 0008 GR
+ cnt_point **** GX
+ 2 h_check_high 0088 R
+ 2 h_check_table 006A R
+ 2 h_clr_dis_ram 000D R
+ 2 h_dis_all 012C R
+ 2 h_dis_low 00BE R
+ 2 h_dis_middle 007E R
+ 2 h_dis_middle1 008F R
+ 1 h_dis_ram0 0003 GR
+ 1 h_dis_ram1 0004 GR
+ 1 h_dis_ram2 0005 GR
+ 1 h_dis_ram3 0006 GR
+ 1 h_dis_ram4 0007 GR
+ 2 h_get_table 00CE R
+ 2 h_getnum 00D6 R
+ 2 h_ready 00F1 R
+ 2 h_ready_ok 00F9 R
+ 2 h_table 0118 R
+ 1 h_temp0 0000 GR
+ 1 h_temp1 0001 GR
+ 1 h_temp2 0002 GR
+ 2 h_x_to_a 001A R
+ 2 h_x_to_a_1 002A R
+ 2 h_x_to_a_2 004B R
+ 2 h_x_to_a_3 0065 R
+ 2 lcd_display 0000 GR
+ 1 temp0 000A GR
+ 1 temp1 000B GR
+ 1 temp2 000C GR
+
+
+Area Table
+
+ 0 . size 0 flags 0
+ 1 display_var size D flags 2
+ 2 display_code size 141 flags 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -