📄 main.ls
字号:
3715 0131 c65203 ld a,_SPI_SR
3716 0134 a501 bcp a,#1
3717 0136 27f9 jreq L1342
3718 ; 40 return data;
3720 0138 7b01 ld a,(OFST+0,sp)
3723 013a 5b01 addw sp,#1
3724 013c 81 ret
3783 ; 21 void st7920LcdInit(void)
3783 ; 22 {
3784 switch .text
3785 013d _st7920LcdInit:
3787 013d 88 push a
3788 00000001 OFST: set 1
3791 ; 24 SPI_Init();
3793 013e adc7 call _SPI_Init
3795 ; 25 delay_ms(100);
3797 0140 ae0064 ldw x,#100
3798 0143 cd0000 call _delay_ms
3800 ; 26 PE_DDR|=0x20;
3802 0146 721a5016 bset _PE_DDR,#5
3803 ; 27 PE_CR1|=0x20;
3805 014a 721a5017 bset _PE_CR1,#5
3806 ; 28 PE_CR2|=0x20;
3808 014e 721a5018 bset _PE_CR2,#5
3809 ; 29 sendCodeST7920(0x0c);//整体显示
3811 0152 a60c ld a,#12
3812 0154 ad1c call _sendCodeST7920
3814 ; 30 sendCodeST7920(0x01);//清屏
3816 0156 a601 ld a,#1
3817 0158 ad18 call _sendCodeST7920
3819 ; 31 sendCodeST7920(0x02);
3821 015a a602 ld a,#2
3822 015c ad14 call _sendCodeST7920
3824 ; 32 for(i=0;i<64;i++)
3826 015e 0f01 clr (OFST+0,sp)
3827 0160 L1642:
3828 ; 33 lcd_buffer[i]=' ';
3830 0160 7b01 ld a,(OFST+0,sp)
3831 0162 5f clrw x
3832 0163 97 ld xl,a
3833 0164 a620 ld a,#32
3834 0166 e700 ld (_lcd_buffer,x),a
3835 ; 32 for(i=0;i<64;i++)
3837 0168 0c01 inc (OFST+0,sp)
3840 016a 7b01 ld a,(OFST+0,sp)
3841 016c a140 cp a,#64
3842 016e 25f0 jrult L1642
3843 ; 35 }
3846 0170 84 pop a
3847 0171 81 ret
3884 ; 37 void sendCodeST7920(u8 Lcd_cmd)
3884 ; 38 {
3885 switch .text
3886 0172 _sendCodeST7920:
3888 0172 88 push a
3889 00000000 OFST: set 0
3892 ; 39 E_CLK
3894 0173 721b5014 bres _PE_ODR,#5
3895 ; 40 LCD_DELAY()
3898 0177 9d nop
3903 0178 9d nop
3908 0179 9d nop
3913 017a 9d nop
3918 017b 9d nop
3920 ; 41 E_SET
3922 017c 721a5014 bset _PE_ODR,#5
3923 ; 42 SPI_sendchar(0xF8);
3925 0180 a6f8 ld a,#248
3926 0182 ad9c call _SPI_sendchar
3928 ; 43 SPI_sendchar(Lcd_cmd & 0xF0);
3930 0184 7b01 ld a,(OFST+1,sp)
3931 0186 a4f0 and a,#240
3932 0188 ad96 call _SPI_sendchar
3934 ; 44 SPI_sendchar(Lcd_cmd << 4);
3936 018a 7b01 ld a,(OFST+1,sp)
3937 018c 97 ld xl,a
3938 018d a610 ld a,#16
3939 018f 42 mul x,a
3940 0190 9f ld a,xl
3941 0191 ad8d call _SPI_sendchar
3943 ; 45 LCD_DELAY()
3946 0193 9d nop
3951 0194 9d nop
3956 0195 9d nop
3961 0196 9d nop
3966 0197 9d nop
3968 ; 46 E_CLK
3970 0198 721b5014 bres _PE_ODR,#5
3971 ; 47 LCD_DELAY()
3974 019c 9d nop
3979 019d 9d nop
3984 019e 9d nop
3989 019f 9d nop
3994 01a0 9d nop
3996 ; 48 }
3999 01a1 84 pop a
4000 01a2 81 ret
4037 ; 50 void sendDataST7920(u8 Lcd_data)
4037 ; 51 {
4038 switch .text
4039 01a3 _sendDataST7920:
4041 01a3 88 push a
4042 00000000 OFST: set 0
4045 ; 52 E_CLK
4047 01a4 721b5014 bres _PE_ODR,#5
4048 ; 53 LCD_DELAY()
4051 01a8 9d nop
4056 01a9 9d nop
4061 01aa 9d nop
4066 01ab 9d nop
4071 01ac 9d nop
4073 ; 54 E_SET
4075 01ad 721a5014 bset _PE_ODR,#5
4076 ; 55 SPI_sendchar(0xFA);
4078 01b1 a6fa ld a,#250
4079 01b3 cd0120 call _SPI_sendchar
4081 ; 56 SPI_sendchar(Lcd_data & 0xF0);
4083 01b6 7b01 ld a,(OFST+1,sp)
4084 01b8 a4f0 and a,#240
4085 01ba cd0120 call _SPI_sendchar
4087 ; 57 SPI_sendchar(Lcd_data << 4);
4089 01bd 7b01 ld a,(OFST+1,sp)
4090 01bf 97 ld xl,a
4091 01c0 a610 ld a,#16
4092 01c2 42 mul x,a
4093 01c3 9f ld a,xl
4094 01c4 cd0120 call _SPI_sendchar
4096 ; 58 LCD_DELAY()
4099 01c7 9d nop
4104 01c8 9d nop
4109 01c9 9d nop
4114 01ca 9d nop
4119 01cb 9d nop
4121 ; 59 E_CLK
4123 01cc 721b5014 bres _PE_ODR,#5
4124 ; 60 LCD_DELAY()
4127 01d0 9d nop
4132 01d1 9d nop
4137 01d2 9d nop
4142 01d3 9d nop
4147 01d4 9d nop
4149 ; 61 }
4152 01d5 84 pop a
4153 01d6 81 ret
4199 ; 63 void refreshLCD(const u8 *lcd_stack)
4199 ; 64 {
4200 switch .text
4201 01d7 _refreshLCD:
4203 01d7 89 pushw x
4204 01d8 88 push a
4205 00000001 OFST: set 1
4208 ; 66 sendCodeST7920(0x02); //地址归位
4210 01d9 a602 ld a,#2
4211 01db ad95 call _sendCodeST7920
4213 ; 67 for(addr=0;addr<16;addr++)
4215 01dd 0f01 clr (OFST+0,sp)
4216 01df L5452:
4217 ; 69 sendDataST7920(*(lcd_stack + addr));
4219 01df 7b02 ld a,(OFST+1,sp)
4220 01e1 97 ld xl,a
4221 01e2 7b03 ld a,(OFST+2,sp)
4222 01e4 1b01 add a,(OFST+0,sp)
4223 01e6 2401 jrnc L64
4224 01e8 5c incw x
4225 01e9 L64:
4226 01e9 02 rlwa x,a
4227 01ea f6 ld a,(x)
4228 01eb adb6 call _sendDataST7920
4230 ; 67 for(addr=0;addr<16;addr++)
4232 01ed 0c01 inc (OFST+0,sp)
4235 01ef 7b01 ld a,(OFST+0,sp)
4236 01f1 a110 cp a,#16
4237 01f3 25ea jrult L5452
4238 ; 71 for(addr=32;addr<48;addr++)
4240 01f5 a620 ld a,#32
4241 01f7 6b01 ld (OFST+0,sp),a
4242 01f9 L3552:
4243 ; 73 sendDataST7920(*(lcd_stack + addr));
4245 01f9 7b02 ld a,(OFST+1,sp)
4246 01fb 97 ld xl,a
4247 01fc 7b03 ld a,(OFST+2,sp)
4248 01fe 1b01 add a,(OFST+0,sp)
4249 0200 2401 jrnc L05
4250 0202 5c incw x
4251 0203 L05:
4252 0203 02 rlwa x,a
4253 0204 f6 ld a,(x)
4254 0205 ad9c call _sendDataST7920
4256 ; 71 for(addr=32;addr<48;addr++)
4258 0207 0c01 inc (OFST+0,sp)
4261 0209 7b01 ld a,(OFST+0,sp)
4262 020b a130 cp a,#48
4263 020d 25ea jrult L3552
4264 ; 75 for(addr=16;addr<32;addr++)
4266 020f a610 ld a,#16
4267 0211 6b01 ld (OFST+0,sp),a
4268 0213 L1652:
4269 ; 77 sendDataST7920(*(lcd_stack + addr));
4271 0213 7b02 ld a,(OFST+1,sp)
4272 0215 97 ld xl,a
4273 0216 7b03 ld a,(OFST+2,sp)
4274 0218 1b01 add a,(OFST+0,sp)
4275 021a 2401 jrnc L25
4276 021c 5c incw x
4277 021d L25:
4278 021d 02 rlwa x,a
4279 021e f6 ld a,(x)
4280 021f ad82 call _sendDataST7920
4282 ; 75 for(addr=16;addr<32;addr++)
4284 0221 0c01 inc (OFST+0,sp)
4287 0223 7b01 ld a,(OFST+0,sp)
4288 0225 a120 cp a,#32
4289 0227 25ea jrult L1652
4290 ; 80 for(addr=48;addr<64;addr++)
4292 0229 a630 ld a,#48
4293 022b 6b01 ld (OFST+0,sp),a
4294 022d L7652:
4295 ; 82 sendDataST7920(*(lcd_stack + addr));
4297 022d 7b02 ld a,(OFST+1,sp)
4298 022f 97 ld xl,a
4299 0230 7b03 ld a,(OFST+2,sp)
4300 0232 1b01 add a,(OFST+0,sp)
4301 0234 2401 jrnc L45
4302 0236 5c incw x
4303 0237 L45:
4304 0237 02 rlwa x,a
4305 0238 f6 ld a,(x)
4306 0239 cd01a3 call _sendDataST7920
4308 ; 80 for(addr=48;addr<64;addr++)
4310 023c 0c01 inc (OFST+0,sp)
4313 023e 7b01 ld a,(OFST+0,sp)
4314 0240 a140 cp a,#64
4315 0242 25e9 jrult L7652
4316 ; 84 }
4319 0244 5b03 addw sp,#3
4320 0246 81 ret
4373 ; 86 void decToAscii(u8* str,u16 dec,u8 width)
4373 ; 87 {
4374 switch .text
4375 0247 _decToAscii:
4377 0247 89 pushw x
4378 00000000 OFST: set 0
4381 0248 ace702e7 jpf L1462
4382 024c L7362:
4383 ; 90 switch(width)
4385 024c 7b07 ld a,(OFST+7,sp)
4387 ; 121 default: *str = '0';
4388 024e 4a dec a
4389 024f 2603cc02d7 jreq L5062
4390 0254 4a dec a
4391 0255 2764 jreq L3062
4392 0257 4a dec a
4393 0258 2745 jreq L1062
4394 025a 4a dec a
4395 025b 2726 jreq L7752
4396 025d 4a dec a
4397 025e 2707 jreq L5752
4398 0260 L7062:
4401 0260 1e01 ldw x,(OFST+1,sp)
4402 0262 a630 ld a,#48
4403 0264 f7 ld (x),a
4404 0265 2077 jra L7462
4405 0267 L5752:
4406 ; 94 *str = (dec / 10000 + '0');
4408 0267 1e05 ldw x,(OFST+5,sp)
4409 0269 90ae2710 ldw y,#10000
4410 026d 65 divw x,y
4411 026e 1c0030 addw x,#48
4412 0271 1601 ldw y,(OFST+1,sp)
4413 0273 01 rrwa x,a
4414 0274 90f7 ld (y),a
4415 0276 02 rlwa x,a
4416 ; 95 dec %= 10000;
4418 0277 1e05 ldw x,(OFST+5,sp)
4419 0279 90ae2710 ldw y,#10000
4420 027d 65 divw x,y
4421 027e 51 exgw x,y
4422 027f 1f05 ldw (OFST+5,sp),x
4423 ; 96 break;
4425 0281 205b jra L7462
4426 0283 L7752:
4427 ; 100 *str = (dec / 1000 + '0');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -