⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mc_display.ls

📁 STM8S105 BLDC源代码
💻 LS
📖 第 1 页 / 共 3 页
字号:
   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 + -