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

📄 main.ls

📁 STM8S105S4程序
💻 LS
字号:
   1                     ; C Compiler for STM8 (COSMIC Software)
   2                     ; Generator V4.2.4 - 19 Dec 2007
2765                     	bsct
2766  0000               _table0:
2767  0000 746f6461792e  	dc.b	"today...",0
2768  0009               _table1:
2769  0009 4920616d2076  	dc.b	"I am very happy!",0
2770  001a               _table2:
2771  001a 7777772e6764  	dc.b	"www.gdutelc.cn",0
2772  0029               _table3:
2773  0029 57656c636f6d  	dc.b	"Welcome to LCD",0
2831                     ; 19 void delay(uint a)
2831                     ; 20 {
2833                     	switch	.text
2834  0000               _delay:
2836  0000 89            	pushw	x
2837  0001 88            	push	a
2838       00000001      OFST:	set	1
2841                     ; 22 	for(a;a>0;a--)
2844  0002 2011          	jra	L3102
2845  0004               L7002:
2846                     ; 23 	  for(i=0;i<250;i++);
2848  0004 0f01          	clr	(OFST+0,sp)
2849  0006               L7102:
2853  0006 0c01          	inc	(OFST+0,sp)
2856  0008 7b01          	ld	a,(OFST+0,sp)
2857  000a a1fa          	cp	a,#250
2858  000c 25f8          	jrult	L7102
2859                     ; 22 	for(a;a>0;a--)
2861  000e 1e02          	ldw	x,(OFST+1,sp)
2862  0010 1d0001        	subw	x,#1
2863  0013 1f02          	ldw	(OFST+1,sp),x
2864  0015               L3102:
2867  0015 1e02          	ldw	x,(OFST+1,sp)
2868  0017 26eb          	jrne	L7002
2869                     ; 24 }
2872  0019 5b03          	addw	sp,#3
2873  001b 81            	ret
2902                     ; 25 void init_stm8(void)
2902                     ; 26 {
2903                     	switch	.text
2904  001c               _init_stm8:
2908                     ; 27 	PA_DDR=0x70;
2910  001c 35705002      	mov	_PA_DDR,#112
2911                     ; 28 	PA_CR1=0x70;
2913  0020 35705003      	mov	_PA_CR1,#112
2914                     ; 29 	PA_CR2=0x00;
2916  0024 725f5004      	clr	_PA_CR2
2917                     ; 31 	PB_DDR=0xff;
2919  0028 35ff5007      	mov	_PB_DDR,#255
2920                     ; 32 	PB_CR1=0xff;
2922  002c 35ff5008      	mov	_PB_CR1,#255
2923                     ; 33 	PB_CR2=0x00;	
2925  0030 725f5009      	clr	_PB_CR2
2926                     ; 34 }
2929  0034 81            	ret
2954                     ; 36 void init_1602(void)
2954                     ; 37 { 
2955                     	switch	.text
2956  0035               _init_1602:
2960                     ; 38   write_com(0x38);        //显示模式设置
2962  0035 a638          	ld	a,#56
2963  0037 ad15          	call	_write_com
2965                     ; 39 	write_com(0x0c);        //开显示,不显示光标
2967  0039 a60c          	ld	a,#12
2968  003b ad11          	call	_write_com
2970                     ; 40 	write_com(0x06);        //地址指针自动加一
2972  003d a606          	ld	a,#6
2973  003f ad0d          	call	_write_com
2975                     ; 41 	write_com(0x01);        //清屏
2977  0041 a601          	ld	a,#1
2978  0043 ad09          	call	_write_com
2980                     ; 42 	write_com(0x80+0x04);   //指针指向第一行第四格
2982  0045 a684          	ld	a,#132
2983  0047 ad05          	call	_write_com
2985                     ; 43 	RW=0;                   //因只涉及向1602写数据,不涉及读,写的时候RW引脚都为低电平,故将RW置低
2987  0049 721b5000      	bres	_RW
2988                     ; 44 }
2991  004d 81            	ret
3029                     ; 47 void write_com(uchar com)
3029                     ; 48 {
3030                     	switch	.text
3031  004e               _write_com:
3035                     ; 49 	RS=0;
3037  004e 72195000      	bres	_RS
3038                     ; 50 	E=0;
3040  0052 721d5000      	bres	_E
3041                     ; 51 	PB_ODR=com;
3043  0056 c75005        	ld	_PB_ODR,a
3044                     ; 52 	delay(2);
3046  0059 ae0002        	ldw	x,#2
3047  005c ada2          	call	_delay
3049                     ; 53 	E=1;
3051  005e 721c5000      	bset	_E
3052                     ; 54 	E=0;
3054  0062 721d5000      	bres	_E
3055                     ; 55 }
3058  0066 81            	ret
3096                     ; 57 void write_data(uchar data)
3096                     ; 58 {
3097                     	switch	.text
3098  0067               _write_data:
3102                     ; 59 	RS=1;
3104  0067 72185000      	bset	_RS
3105                     ; 60 	E=0;
3107  006b 721d5000      	bres	_E
3108                     ; 61 	PB_ODR=data;
3110  006f c75005        	ld	_PB_ODR,a
3111                     ; 62 	delay(2);
3113  0072 ae0002        	ldw	x,#2
3114  0075 ad89          	call	_delay
3116                     ; 63 	E=1;
3118  0077 721c5000      	bset	_E
3119                     ; 64 	E=0;
3121  007b 721d5000      	bres	_E
3122                     ; 65 }
3125  007f 81            	ret
3162                     ; 67 void display(uchar *s)
3162                     ; 68 {
3163                     	switch	.text
3164  0080               _display:
3166  0080 89            	pushw	x
3167       00000000      OFST:	set	0
3170  0081 2013          	jra	L1212
3171  0083               L7112:
3172                     ; 71 		write_data(*s++);     //显示指针×s所指地址的字符
3174  0083 1e01          	ldw	x,(OFST+1,sp)
3175  0085 1c0001        	addw	x,#1
3176  0088 1f01          	ldw	(OFST+1,sp),x
3177  008a 1d0001        	subw	x,#1
3178  008d f6            	ld	a,(x)
3179  008e add7          	call	_write_data
3181                     ; 72 		delay(50);
3183  0090 ae0032        	ldw	x,#50
3184  0093 cd0000        	call	_delay
3186  0096               L1212:
3187                     ; 69 	while(*s>0)             //在有n个字符的字符组中有n+1字节,最后一字节为0,故这里就是把所有字符显示完后退出显示
3189  0096 1e01          	ldw	x,(OFST+1,sp)
3190  0098 7d            	tnz	(x)
3191  0099 26e8          	jrne	L7112
3192                     ; 74 }
3195  009b 85            	popw	x
3196  009c 81            	ret
3239                     ; 76 void main()
3239                     ; 77 { 
3240                     	switch	.text
3241  009d               _main:
3243  009d 88            	push	a
3244       00000001      OFST:	set	1
3247                     ; 79   init_stm8();
3249  009e cd001c        	call	_init_stm8
3251  00a1               L3412:
3252                     ; 82     init_1602();              //初始化1602
3254  00a1 ad92          	call	_init_1602
3256                     ; 83 		display(table0);          //显示today···
3258  00a3 ae0000        	ldw	x,#_table0
3259  00a6 add8          	call	_display
3261                     ; 85 		write_com(0x80+0x40);     //将地址指针移到第二行
3263  00a8 a6c0          	ld	a,#192
3264  00aa ada2          	call	_write_com
3266                     ; 86 		display(table1);          //显示table1中的字符
3268  00ac ae0009        	ldw	x,#_table1
3269  00af adcf          	call	_display
3271                     ; 87 		delay(1000);               //延时一段时间
3273  00b1 ae03e8        	ldw	x,#1000
3274  00b4 cd0000        	call	_delay
3276                     ; 89 		write_com(0x01);          //清屏
3278  00b7 a601          	ld	a,#1
3279  00b9 ad93          	call	_write_com
3281                     ; 90 		write_com(0x38);          //显示模式设置
3283  00bb a638          	ld	a,#56
3284  00bd ad8f          	call	_write_com
3286                     ; 91 		write_com(0x80+0x10);     //地址指针移到第一行第17列中
3288  00bf a690          	ld	a,#144
3289  00c1 ad8b          	call	_write_com
3291                     ; 92 		display(table2);
3293  00c3 ae001a        	ldw	x,#_table2
3294  00c6 adb8          	call	_display
3296                     ; 94 		write_com(0x80+0x40+0x10); //地址指针移到第二行第17列中
3298  00c8 a6d0          	ld	a,#208
3299  00ca ad82          	call	_write_com
3301                     ; 95 		display(table3);
3303  00cc ae0029        	ldw	x,#_table3
3304  00cf adaf          	call	_display
3306                     ; 96 		for(i=0;i<15;i++)         //整屏左移15行
3308  00d1 0f01          	clr	(OFST+0,sp)
3309  00d3               L7412:
3310                     ; 98 		  write_com(0x18);        //整屏向左移
3312  00d3 a618          	ld	a,#24
3313  00d5 cd004e        	call	_write_com
3315                     ; 99 			delay(200);
3317  00d8 ae00c8        	ldw	x,#200
3318  00db cd0000        	call	_delay
3320                     ; 96 		for(i=0;i<15;i++)         //整屏左移15行
3322  00de 0c01          	inc	(OFST+0,sp)
3325  00e0 7b01          	ld	a,(OFST+0,sp)
3326  00e2 a10f          	cp	a,#15
3327  00e4 25ed          	jrult	L7412
3328                     ; 101 		delay(2000);
3330  00e6 ae07d0        	ldw	x,#2000
3331  00e9 cd0000        	call	_delay
3334  00ec 20b3          	jra	L3412
3419                     	xdef	_main
3420                     	xdef	_display
3421                     	xdef	_write_data
3422                     	xdef	_init_1602
3423                     	xdef	_init_stm8
3424                     	xdef	_delay
3425                     	xdef	_write_com
3426                     	xdef	_table3
3427                     	xdef	_table2
3428                     	xdef	_table1
3429                     	xdef	_table0
3448                     	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -