📄 mc_display.ls
字号:
1 ; C Compiler for STM8 (COSMIC Software)
2 ; Parser V4.9.10 - 10 Feb 2011
3 ; Generator (Limited) V4.3.6 - 15 Feb 2011
4 ; Optimizer V4.3.5 - 15 Feb 2011
19 bsct
20 0000 _DEV_Display:
21 0000 0f dc.b 15
22 0001 02 dc.b 2
23 0002 00 dc.b 0
24 0003 00 dc.b 0
25 0004 L3_bBlinkState:
26 0004 00 dc.b 0
27 0005 L5_g_pUserInterface:
28 0005 0000 dc.w 0
29 0007 L7_g_pdevice:
30 0007 0000 dc.w 0
31 0009 L11_g_pSelTab:
32 0009 0000 dc.w 0
652 ; 57 void displayInit(pvdev_device_t pDevice,PUserInterface_t pUserInterface)
652 ; 58 {
654 switch .text
655 0000 _displayInit:
657 0000 89 pushw x
658 00000000 OFST: set 0
661 ; 59 g_pUserInterface = pUserInterface;
663 0001 1e05 ldw x,(OFST+5,sp)
664 0003 bf05 ldw L5_g_pUserInterface,x
665 ; 60 g_pdevice = pDevice;
667 0005 1e01 ldw x,(OFST+1,sp)
668 0007 bf07 ldw L7_g_pdevice,x
669 ; 62 display_welcome_message();
671 0009 cd04e0 call _display_welcome_message
673 ; 63 vtimer_SetTimer(VTIM_DISPLAY_REFRESH,DISPLAY_REFRESH_TIME,0);
675 000c 5f clrw x
676 000d 89 pushw x
677 000e ae012c ldw x,#300
678 0011 89 pushw x
679 0012 a602 ld a,#2
680 0014 cd0000 call _vtimer_SetTimer
682 0017 5b04 addw sp,#4
683 ; 64 }
686 0019 85 popw x
687 001a 81 ret
742 ; 66 void display_clsscr(pvdev_device_t pdevice)
742 ; 67 {
743 switch .text
744 001b _display_clsscr:
746 001b 89 pushw x
747 001c 89 pushw x
748 00000002 OFST: set 2
751 ; 69 for (j = 0; j < DEV_Display_ROW; j++)
753 001d 0f01 clr (OFST-1,sp)
754 001f L134:
755 ; 71 for (i = 0; i < DEV_Display_COL; i++)
757 001f 0f02 clr (OFST+0,sp)
758 0021 L734:
759 ; 73 pdevice->mems.m8[j*DEV_Display_COL + i] = 32; // Space ascii
761 0021 7b01 ld a,(OFST-1,sp)
762 0023 97 ld xl,a
763 0024 a60f ld a,#15
764 0026 42 mul x,a
765 0027 01 rrwa x,a
766 0028 1b02 add a,(OFST+0,sp)
767 002a 2401 jrnc L41
768 002c 5c incw x
769 002d L41:
770 002d 1603 ldw y,(OFST+1,sp)
771 002f 02 rlwa x,a
772 0030 90ee09 ldw y,(9,y)
773 0033 90bf00 ldw c_x,y
774 0036 72bb0000 addw x,c_x
775 003a a620 ld a,#32
776 003c f7 ld (x),a
777 ; 71 for (i = 0; i < DEV_Display_COL; i++)
779 003d 0c02 inc (OFST+0,sp)
782 003f 7b02 ld a,(OFST+0,sp)
783 0041 a10f cp a,#15
784 0043 25dc jrult L734
785 ; 69 for (j = 0; j < DEV_Display_ROW; j++)
787 0045 0c01 inc (OFST-1,sp)
790 0047 7b01 ld a,(OFST-1,sp)
791 0049 a102 cp a,#2
792 004b 25d2 jrult L134
793 ; 76 }
796 004d 5b04 addw sp,#4
797 004f 81 ret
841 ; 78 void display_setcurrpos(display_index_t x, display_index_t y)
841 ; 79 {
842 switch .text
843 0050 _display_setcurrpos:
845 0050 89 pushw x
846 00000000 OFST: set 0
849 ; 80 if (x > 0)
851 0051 9e ld a,xh
852 0052 4d tnz a
853 0053 270a jreq L764
854 ; 82 x--;
856 0055 0a01 dec (OFST+1,sp)
857 ; 83 if (x < DEV_Display_COL)
859 0057 7b01 ld a,(OFST+1,sp)
860 0059 a10f cp a,#15
861 005b 2402 jruge L764
862 ; 85 DEV_Display.Cur_x = x;
864 005d b702 ld _DEV_Display+2,a
865 005f L764:
866 ; 88 if (y > 0)
868 005f 7b02 ld a,(OFST+2,sp)
869 0061 270a jreq L374
870 ; 90 y--;
872 0063 0a02 dec (OFST+2,sp)
873 ; 91 if (y < DEV_Display_ROW)
875 0065 7b02 ld a,(OFST+2,sp)
876 0067 a102 cp a,#2
877 0069 2402 jruge L374
878 ; 93 DEV_Display.Cur_y = y;
880 006b b703 ld _DEV_Display+3,a
881 006d L374:
882 ; 96 }
885 006d 85 popw x
886 006e 81 ret
933 ; 98 void display_printchar(pvdev_device_t pdevice,char ch)
933 ; 99 {
934 switch .text
935 006f _display_printchar:
937 006f 89 pushw x
938 00000000 OFST: set 0
941 ; 100 pdevice->mems.m8[DEV_Display.Cur_y * DEV_Display_COL + DEV_Display.Cur_x] = ch;
943 0070 b603 ld a,_DEV_Display+3
944 0072 97 ld xl,a
945 0073 a60f ld a,#15
946 0075 42 mul x,a
947 0076 01 rrwa x,a
948 0077 bb02 add a,_DEV_Display+2
949 0079 2401 jrnc L22
950 007b 5c incw x
951 007c L22:
952 007c 1601 ldw y,(OFST+1,sp)
953 007e 02 rlwa x,a
954 007f 90ee09 ldw y,(9,y)
955 0082 90bf00 ldw c_x,y
956 0085 72bb0000 addw x,c_x
957 0089 7b05 ld a,(OFST+5,sp)
958 008b f7 ld (x),a
959 ; 101 }
962 008c 85 popw x
963 008d 81 ret
1011 ; 103 void display_printstr(pvdev_device_t pdevice,char *pStr)
1011 ; 104 {
1012 switch .text
1013 008e _display_printstr:
1015 008e 89 pushw x
1016 00000000 OFST: set 0
1019 008f 1e05 ldw x,(OFST+5,sp)
1020 0091 2025 jra L155
1021 0093 L745:
1022 ; 107 pdevice->mems.m8[DEV_Display.Cur_y * DEV_Display_COL + DEV_Display.Cur_x] = *pStr;
1024 0093 b603 ld a,_DEV_Display+3
1025 0095 97 ld xl,a
1026 0096 a60f ld a,#15
1027 0098 42 mul x,a
1028 0099 01 rrwa x,a
1029 009a bb02 add a,_DEV_Display+2
1030 009c 2401 jrnc L62
1031 009e 5c incw x
1032 009f L62:
1033 009f 1601 ldw y,(OFST+1,sp)
1034 00a1 02 rlwa x,a
1035 00a2 90ee09 ldw y,(9,y)
1036 00a5 90bf00 ldw c_x,y
1037 00a8 1605 ldw y,(OFST+5,sp)
1038 00aa 72bb0000 addw x,c_x
1039 00ae 90f6 ld a,(y)
1040 00b0 f7 ld (x),a
1041 ; 108 DEV_Display.Cur_x++;
1043 00b1 3c02 inc _DEV_Display+2
1044 ; 109 pStr++;
1046 00b3 1e05 ldw x,(OFST+5,sp)
1047 00b5 5c incw x
1048 00b6 1f05 ldw (OFST+5,sp),x
1049 00b8 L155:
1050 ; 105 while ((*pStr != 0) && (DEV_Display.Cur_x < DEV_Display_COL))
1052 00b8 f6 ld a,(x)
1053 00b9 2706 jreq L555
1055 00bb b602 ld a,_DEV_Display+2
1056 00bd a10f cp a,#15
1057 00bf 25d2 jrult L745
1058 00c1 L555:
1059 ; 111 if (DEV_Display.Cur_x >= DEV_Display_COL)
1061 00c1 b602 ld a,_DEV_Display+2
1062 00c3 a10f cp a,#15
1063 00c5 2504 jrult L755
1064 ; 112 DEV_Display.Cur_x = DEV_Display_COL - 1;
1066 00c7 350e0002 mov _DEV_Display+2,#14
1067 00cb L755:
1068 ; 113 }
1071 00cb 85 popw x
1072 00cc 81 ret
1099 ; 115 void display_flush(void)
1099 ; 116 {
1100 switch .text
1101 00cd _display_flush:
1105 ; 117 if (g_pUserInterface->bStatus == UI_UNLOCKED)
1107 00cd 92c605 ld a,[L5_g_pUserInterface.w]
1108 00d0 260b jrne L175
1109 ; 120 display_create(g_pdevice, g_pUserInterface);
1111 00d2 be05 ldw x,L5_g_pUserInterface
1112 00d4 89 pushw x
1113 00d5 be07 ldw x,L7_g_pdevice
1114 00d7 cd0225 call _display_create
1116 00da 85 popw x
1118 00db 2003 jra L375
1119 00dd L175:
1120 ; 125 display_create_locked_screen();
1122 00dd cd0517 call _display_create_locked_screen
1124 00e0 L375:
1125 ; 128 g_pdevice->ios.out8(VDEV_OUT8_DISPLAY_FLUSH,0);
1127 00e0 4b00 push #0
1128 00e2 ae0002 ldw x,#2
1129 00e5 89 pushw x
1130 00e6 5f clrw x
1131 00e7 89 pushw x
1132 00e8 be07 ldw x,L7_g_pdevice
1133 00ea ee1b ldw x,(27,x)
1134 00ec fd call (x)
1136 00ed 5b05 addw sp,#5
1137 ; 129 }
1140 00ef 81 ret
1211 ; 133 void APP_sPrintDec(u8* pStr, u16 Number, u8 Digit)
1211 ; 134 {
1212 switch .text
1213 00f0 _APP_sPrintDec:
1215 00f0 89 pushw x
1216 00f1 5206 subw sp,#6
1217 00000006 OFST: set 6
1220 ; 141 Nbre1Tmp = (u16)(Number / (u16)10000);
1222 00f3 1e0b ldw x,(OFST+5,sp)
1223 00f5 90ae2710 ldw y,#10000
1224 00f9 65 divw x,y
1225 00fa 1f05 ldw (OFST-1,sp),x
1226 ; 142 if (Digit > 4)
1228 00fc 7b0d ld a,(OFST+7,sp)
1229 00fe a105 cp a,#5
1230 0100 250c jrult L336
1231 ; 144 *pStr = (u8)(Nbre1Tmp + (u8)0x30);
1233 0102 7b06 ld a,(OFST+0,sp)
1234 0104 1e07 ldw x,(OFST+1,sp)
1235 0106 ab30 add a,#48
1236 0108 f7 ld (x),a
1237 ; 145 pStr++;
1239 0109 5c incw x
1240 010a 1f07 ldw (OFST+1,sp),x
1241 010c 1e05 ldw x,(OFST-1,sp)
1242 010e L336:
1243 ; 150 Nbre1Tmp = (u16)(Number - ((u16)10000 * Nbre1Tmp));
1245 010e 90ae2710 ldw y,#10000
1246 0112 cd0000 call c_imul
1248 0115 1f01 ldw (OFST-5,sp),x
1249 0117 1e0b ldw x,(OFST+5,sp)
1250 0119 72f001 subw x,(OFST-5,sp)
1251 011c 1f05 ldw (OFST-1,sp),x
1252 ; 151 Nbre2Tmp = (u16)(Nbre1Tmp / (u16)1000);
1254 011e 90ae03e8 ldw y,#1000
1255 0122 65 divw x,y
1256 0123 1f03 ldw (OFST-3,sp),x
1257 ; 152 if (Digit > 3)
1259 0125 7b0d ld a,(OFST+7,sp)
1260 0127 a104 cp a,#4
1261 0129 250c jrult L536
1262 ; 154 *pStr = (u8)(Nbre2Tmp + (u8)0x30);
1264 012b 7b04 ld a,(OFST-2,sp)
1265 012d 1e07 ldw x,(OFST+1,sp)
1266 012f ab30 add a,#48
1267 0131 f7 ld (x),a
1268 ; 155 pStr++;
1270 0132 5c incw x
1271 0133 1f07 ldw (OFST+1,sp),x
1272 0135 1e03 ldw x,(OFST-3,sp)
1273 0137 L536:
1274 ; 160 Nbre1Tmp = (u16)(Nbre1Tmp - ((u16)1000 * Nbre2Tmp));
1276 0137 90ae03e8 ldw y,#1000
1277 013b cd0000 call c_imul
1279 013e 1f01 ldw (OFST-5,sp),x
1280 0140 1e05 ldw x,(OFST-1,sp)
1281 0142 72f001 subw x,(OFST-5,sp)
1282 0145 1f05 ldw (OFST-1,sp),x
1283 ; 161 Nbre2Tmp = (u16)(Nbre1Tmp / (u16)100);
1285 0147 90ae0064 ldw y,#100
1286 014b 65 divw x,y
1287 014c 1f03 ldw (OFST-3,sp),x
1288 ; 162 if (Digit > 2)
1290 014e 7b0d ld a,(OFST+7,sp)
1291 0150 a103 cp a,#3
1292 0152 250c jrult L736
1293 ; 164 *pStr = (u8)(Nbre2Tmp + (u8)0x30);
1295 0154 7b04 ld a,(OFST-2,sp)
1296 0156 1e07 ldw x,(OFST+1,sp)
1297 0158 ab30 add a,#48
1298 015a f7 ld (x),a
1299 ; 165 pStr ++;
1301 015b 5c incw x
1302 015c 1f07 ldw (OFST+1,sp),x
1303 015e 1e03 ldw x,(OFST-3,sp)
1304 0160 L736:
1305 ; 170 Nbre1Tmp = (u16)(Nbre1Tmp - ((u16)100 * Nbre2Tmp));
1307 0160 90ae0064 ldw y,#100
1308 0164 cd0000 call c_imul
1310 0167 1f01 ldw (OFST-5,sp),x
1311 0169 1e05 ldw x,(OFST-1,sp)
1312 016b 72f001 subw x,(OFST-5,sp)
1313 016e 1f05 ldw (OFST-1,sp),x
1314 ; 171 Nbre2Tmp = (u16)(Nbre1Tmp / (u16)10);
1316 0170 90ae000a ldw y,#10
1317 0174 65 divw x,y
1318 0175 1f03 ldw (OFST-3,sp),x
1319 ; 172 if (Digit > 1)
1321 0177 7b0d ld a,(OFST+7,sp)
1322 0179 a102 cp a,#2
1323 017b 250c jrult L146
1324 ; 174 *pStr = (u8)(Nbre2Tmp + (u8)0x30);
1326 017d 7b04 ld a,(OFST-2,sp)
1327 017f 1e07 ldw x,(OFST+1,sp)
1328 0181 ab30 add a,#48
1329 0183 f7 ld (x),a
1330 ; 175 pStr++;
1332 0184 5c incw x
1333 0185 1f07 ldw (OFST+1,sp),x
1334 0187 1e03 ldw x,(OFST-3,sp)
1335 0189 L146:
1336 ; 179 Nbre1Tmp = ((u16)(Nbre1Tmp - (u16)((u16)10 * Nbre2Tmp)));
1338 0189 90ae000a ldw y,#10
1339 018d cd0000 call c_imul
1341 0190 1f01 ldw (OFST-5,sp),x
1342 0192 1e05 ldw x,(OFST-1,sp)
1343 0194 72f001 subw x,(OFST-5,sp)
1344 0197 1f05 ldw (OFST-1,sp),x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -