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

📄 main.ls

📁 STM8全部资料
💻 LS
📖 第 1 页 / 共 3 页
字号:
   1                     ; C Compiler for STM8 (COSMIC Software)
   2                     ; Parser V4.8.32.1 - 30 Mar 2010
   3                     ; Generator V4.3.4 - 23 Mar 2010
2823                     ; 52 void delay_ms(u16 ms)
2823                     ; 53 {
2825                     	switch	.text
2826  0000               _delay_ms:
2828  0000 89            	pushw	x
2829  0001 88            	push	a
2830       00000001      OFST:	set	1
2833  0002 201b          	jra	L1102
2834  0004               L7002:
2835                     ; 57 				for(i=0;i<250;i++)
2837  0004 0f01          	clr	(OFST+0,sp)
2838  0006               L5102:
2841  0006 0c01          	inc	(OFST+0,sp)
2844  0008 7b01          	ld	a,(OFST+0,sp)
2845  000a a1fa          	cp	a,#250
2846  000c 25f8          	jrult	L5102
2847                     ; 59 				for(i=0;i<75;i++)
2849  000e 0f01          	clr	(OFST+0,sp)
2850  0010               L3202:
2853  0010 0c01          	inc	(OFST+0,sp)
2856  0012 7b01          	ld	a,(OFST+0,sp)
2857  0014 a14b          	cp	a,#75
2858  0016 25f8          	jrult	L3202
2859                     ; 61 				ms--;
2861  0018 1e02          	ldw	x,(OFST+1,sp)
2862  001a 1d0001        	subw	x,#1
2863  001d 1f02          	ldw	(OFST+1,sp),x
2864  001f               L1102:
2865                     ; 55 			while(ms!=0)
2867  001f 1e02          	ldw	x,(OFST+1,sp)
2868  0021 26e1          	jrne	L7002
2869                     ; 63 }
2872  0023 5b03          	addw	sp,#3
2873  0025 81            	ret
2916                     ; 65 void delay_us(u16 us)
2916                     ; 66 {
2917                     	switch	.text
2918  0026               _delay_us:
2920  0026 89            	pushw	x
2921  0027 88            	push	a
2922       00000001      OFST:	set	1
2925  0028 201b          	jra	L5502
2926  002a               L3502:
2927                     ; 70 				for(i=0;i<25;i++)
2929  002a 0f01          	clr	(OFST+0,sp)
2930  002c               L1602:
2933  002c 0c01          	inc	(OFST+0,sp)
2936  002e 7b01          	ld	a,(OFST+0,sp)
2937  0030 a119          	cp	a,#25
2938  0032 25f8          	jrult	L1602
2939                     ; 72 				for(i=0;i<7;i++)
2941  0034 0f01          	clr	(OFST+0,sp)
2942  0036               L7602:
2945  0036 0c01          	inc	(OFST+0,sp)
2948  0038 7b01          	ld	a,(OFST+0,sp)
2949  003a a107          	cp	a,#7
2950  003c 25f8          	jrult	L7602
2951                     ; 74 				us--;
2953  003e 1e02          	ldw	x,(OFST+1,sp)
2954  0040 1d0001        	subw	x,#1
2955  0043 1f02          	ldw	(OFST+1,sp),x
2956  0045               L5502:
2957                     ; 68 			while(us!=0)
2959  0045 1e02          	ldw	x,(OFST+1,sp)
2960  0047 26e1          	jrne	L3502
2961                     ; 76 }
2964  0049 5b03          	addw	sp,#3
2965  004b 81            	ret
3007                     ; 17 void SPI_Init(void)
3007                     ; 18 {
3008                     	switch	.text
3009  004c               _SPI_Init:
3013                     ; 19 	SPI_CR1|=0x38;   //波特率
3015  004c c65200        	ld	a,_SPI_CR1
3016  004f aa38          	or	a,#56
3017  0051 c75200        	ld	_SPI_CR1,a
3018                     ; 24 	SPI_CR2|=0x03;   //配置NSS脚为1
3020  0054 c65201        	ld	a,_SPI_CR2
3021  0057 aa03          	or	a,#3
3022  0059 c75201        	ld	_SPI_CR2,a
3023                     ; 25 	SPI_CR1|=0x04;   //配置为主设备
3025  005c 72145200      	bset	_SPI_CR1,#2
3026                     ; 26 	SPI_CR1|=0x40;   //开启SPI
3028  0060 721c5200      	bset	_SPI_CR1,#6
3029                     ; 27 }
3032  0064 81            	ret
3068                     ; 29 void SPI_sendchar(u8 data)
3068                     ; 30 {	
3069                     	switch	.text
3070  0065               _SPI_sendchar:
3074                     ; 31 	SPI_DR=data;
3076  0065 c75204        	ld	_SPI_DR,a
3078  0068               L5312:
3079                     ; 32 	while(!(SPI_SR & 0x02));
3081  0068 c65203        	ld	a,_SPI_SR
3082  006b a502          	bcp	a,#2
3083  006d 27f9          	jreq	L5312
3084                     ; 33 }
3087  006f 81            	ret
3123                     ; 35 u8 SPI_rechar(void)
3123                     ; 36 {	
3124                     	switch	.text
3125  0070               _SPI_rechar:
3127  0070 88            	push	a
3128       00000001      OFST:	set	1
3131                     ; 38 	data=SPI_DR;
3133  0071 c65204        	ld	a,_SPI_DR
3134  0074 6b01          	ld	(OFST+0,sp),a
3136  0076               L3612:
3137                     ; 39 	while(!(SPI_SR & 0x01));
3139  0076 c65203        	ld	a,_SPI_SR
3140  0079 a501          	bcp	a,#1
3141  007b 27f9          	jreq	L3612
3142                     ; 40 	return data;
3144  007d 7b01          	ld	a,(OFST+0,sp)
3147  007f 5b01          	addw	sp,#1
3148  0081 81            	ret
3192                     ; 23 void AT45DBXX_Init(void)
3192                     ; 24 {/*
3193                     	switch	.text
3194  0082               _AT45DBXX_Init:
3198                     ; 33 	SPI_Init();
3200  0082 adc8          	call	_SPI_Init
3202                     ; 34 	PE_DDR|=0x20;
3204  0084 721a5016      	bset	_PE_DDR,#5
3205                     ; 35 	PE_CR1|=0x20;
3207  0088 721a5017      	bset	_PE_CR1,#5
3208                     ; 36 	CS_SET;
3210  008c 721a5014      	bset	_PE_ODR,#5
3211                     ; 37 }
3215  0090 81            	ret
3261                     ; 54 void write_buffer(u16 BufferOffset,u8 Data)
3261                     ; 55 {			
3262                     	switch	.text
3263  0091               _write_buffer:
3265  0091 89            	pushw	x
3266       00000000      OFST:	set	0
3269                     ; 56 	CS_CLK;
3271  0092 721b5014      	bres	_PE_ODR,#5
3272                     ; 57 	delay_us(10);
3275  0096 ae000a        	ldw	x,#10
3276  0099 ad8b          	call	_delay_us
3278                     ; 58 	SPI_sendchar(0x84);			
3280  009b a684          	ld	a,#132
3281  009d adc6          	call	_SPI_sendchar
3283                     ; 59 	SPI_sendchar(0xff);
3285  009f a6ff          	ld	a,#255
3286  00a1 adc2          	call	_SPI_sendchar
3288                     ; 60 	SPI_sendchar((u8)BufferOffset>>8);
3290  00a3 4f            	clr	a
3291  00a4 adbf          	call	_SPI_sendchar
3293                     ; 61 	SPI_sendchar((u8)BufferOffset);		
3295  00a6 7b02          	ld	a,(OFST+2,sp)
3296  00a8 adbb          	call	_SPI_sendchar
3298                     ; 62 	SPI_sendchar(Data);
3300  00aa 7b05          	ld	a,(OFST+5,sp)
3301  00ac adb7          	call	_SPI_sendchar
3303                     ; 63 	delay_us(10);
3305  00ae ae000a        	ldw	x,#10
3306  00b1 cd0026        	call	_delay_us
3308                     ; 64 	CS_SET;
3310  00b4 721a5014      	bset	_PE_ODR,#5
3311                     ; 65 }
3315  00b8 85            	popw	x
3316  00b9 81            	ret
3363                     ; 67 u8 read_buffer(u16 BufferOffset)
3363                     ; 68 {		
3364                     	switch	.text
3365  00ba               _read_buffer:
3367  00ba 89            	pushw	x
3368  00bb 88            	push	a
3369       00000001      OFST:	set	1
3372                     ; 70 	CS_CLK;
3374  00bc 721b5014      	bres	_PE_ODR,#5
3375                     ; 71 	delay_us(10);
3378  00c0 ae000a        	ldw	x,#10
3379  00c3 cd0026        	call	_delay_us
3381                     ; 72  	SPI_sendchar(0xd4);
3383  00c6 a6d4          	ld	a,#212
3384  00c8 ad9b          	call	_SPI_sendchar
3386                     ; 73 	SPI_sendchar(0xff);
3388  00ca a6ff          	ld	a,#255
3389  00cc ad97          	call	_SPI_sendchar
3391                     ; 74 	SPI_sendchar((u8)BufferOffset>>8);
3393  00ce 4f            	clr	a
3394  00cf ad94          	call	_SPI_sendchar
3396                     ; 75 	SPI_sendchar((u8)BufferOffset);
3398  00d1 7b03          	ld	a,(OFST+2,sp)
3399  00d3 ad90          	call	_SPI_sendchar
3401                     ; 76 	SPI_sendchar(0xff);
3403  00d5 a6ff          	ld	a,#255
3404  00d7 ad8c          	call	_SPI_sendchar
3406                     ; 77 	SPI_sendchar(0xff);
3408  00d9 a6ff          	ld	a,#255
3409  00db ad88          	call	_SPI_sendchar
3411                     ; 78 	temp=SPI_rechar();
3413  00dd ad91          	call	_SPI_rechar
3415  00df 6b01          	ld	(OFST+0,sp),a
3416                     ; 79 	delay_us(10);
3418  00e1 ae000a        	ldw	x,#10
3419  00e4 cd0026        	call	_delay_us
3421                     ; 80 	CS_SET;
3423  00e7 721a5014      	bset	_PE_ODR,#5
3424                     ; 81 	return temp;		
3427  00eb 7b01          	ld	a,(OFST+0,sp)
3430  00ed 5b03          	addw	sp,#3
3431  00ef 81            	ret
3490                     ; 21 void st7920LcdInit(void)
3490                     ; 22 {
3491                     	switch	.text
3492  00f0               _st7920LcdInit:
3494  00f0 88            	push	a
3495       00000001      OFST:	set	1
3498                     ; 24 	SPI_Init();
3500  00f1 cd004c        	call	_SPI_Init
3502                     ; 25 	delay_ms(100);
3504  00f4 ae0064        	ldw	x,#100
3505  00f7 cd0000        	call	_delay_ms
3507                     ; 26 	PE_DDR|=0x20;
3509  00fa 721a5016      	bset	_PE_DDR,#5
3510                     ; 27 	PE_CR1|=0x20;
3512  00fe 721a5017      	bset	_PE_CR1,#5
3513                     ; 28 	PE_CR2|=0x20;
3515  0102 721a5018      	bset	_PE_CR2,#5
3516                     ; 29 	sendCodeST7920(0x0c);//整体显示
3518  0106 a60c          	ld	a,#12
3519  0108 ad1c          	call	_sendCodeST7920
3521                     ; 30 	sendCodeST7920(0x01);//清屏
3523  010a a601          	ld	a,#1
3524  010c ad18          	call	_sendCodeST7920
3526                     ; 31 	sendCodeST7920(0x02);
3528  010e a602          	ld	a,#2
3529  0110 ad14          	call	_sendCodeST7920
3531                     ; 32 	for(i=0;i<64;i++)
3533  0112 0f01          	clr	(OFST+0,sp)
3534  0114               L5722:
3535                     ; 33 		lcd_buffer[i]=' ';
3537  0114 7b01          	ld	a,(OFST+0,sp)
3538  0116 5f            	clrw	x
3539  0117 97            	ld	xl,a
3540  0118 a620          	ld	a,#32
3541  011a e700          	ld	(_lcd_buffer,x),a
3542                     ; 32 	for(i=0;i<64;i++)
3544  011c 0c01          	inc	(OFST+0,sp)
3547  011e 7b01          	ld	a,(OFST+0,sp)
3548  0120 a140          	cp	a,#64
3549  0122 25f0          	jrult	L5722
3550                     ; 35 }
3553  0124 84            	pop	a
3554  0125 81            	ret
3591                     ; 37 void sendCodeST7920(u8 Lcd_cmd)
3591                     ; 38 {
3592                     	switch	.text
3593  0126               _sendCodeST7920:
3595  0126 88            	push	a
3596       00000000      OFST:	set	0
3599                     ; 39 	E_CLK
3601  0127 721b5014      	bres	_PE_ODR,#5
3602                     ; 40 	LCD_DELAY()
3605  012b 9d            nop
3610  012c 9d            nop
3615  012d 9d            nop
3620  012e 9d            nop
3625  012f 9d            nop
3627                     ; 41 	E_SET
3629  0130 721a5014      	bset	_PE_ODR,#5
3630                     ; 42 	SPI_sendchar(0xF8);
3632  0134 a6f8          	ld	a,#248
3633  0136 cd0065        	call	_SPI_sendchar
3635                     ; 43 	SPI_sendchar(Lcd_cmd & 0xF0);
3637  0139 7b01          	ld	a,(OFST+1,sp)
3638  013b a4f0          	and	a,#240
3639  013d cd0065        	call	_SPI_sendchar
3641                     ; 44 	SPI_sendchar(Lcd_cmd << 4);
3643  0140 7b01          	ld	a,(OFST+1,sp)
3644  0142 97            	ld	xl,a
3645  0143 a610          	ld	a,#16
3646  0145 42            	mul	x,a
3647  0146 9f            	ld	a,xl
3648  0147 cd0065        	call	_SPI_sendchar
3650                     ; 45 	LCD_DELAY()
3653  014a 9d            nop
3658  014b 9d            nop
3663  014c 9d            nop
3668  014d 9d            nop
3673  014e 9d            nop
3675                     ; 46 	E_CLK
3677  014f 721b5014      	bres	_PE_ODR,#5
3678                     ; 47 	LCD_DELAY()
3681  0153 9d            nop
3686  0154 9d            nop
3691  0155 9d            nop
3696  0156 9d            nop
3701  0157 9d            nop
3703                     ; 48 }
3706  0158 84            	pop	a
3707  0159 81            	ret
3744                     ; 50 void sendDataST7920(u8 Lcd_data)
3744                     ; 51 {
3745                     	switch	.text
3746  015a               _sendDataST7920:
3748  015a 88            	push	a
3749       00000000      OFST:	set	0
3752                     ; 52 	E_CLK
3754  015b 721b5014      	bres	_PE_ODR,#5
3755                     ; 53 	LCD_DELAY()
3758  015f 9d            nop
3763  0160 9d            nop
3768  0161 9d            nop
3773  0162 9d            nop
3778  0163 9d            nop
3780                     ; 54 	E_SET
3782  0164 721a5014      	bset	_PE_ODR,#5
3783                     ; 55 	SPI_sendchar(0xFA);
3785  0168 a6fa          	ld	a,#250
3786  016a cd0065        	call	_SPI_sendchar
3788                     ; 56 	SPI_sendchar(Lcd_data & 0xF0);
3790  016d 7b01          	ld	a,(OFST+1,sp)
3791  016f a4f0          	and	a,#240
3792  0171 cd0065        	call	_SPI_sendchar
3794                     ; 57 	SPI_sendchar(Lcd_data << 4);
3796  0174 7b01          	ld	a,(OFST+1,sp)
3797  0176 97            	ld	xl,a
3798  0177 a610          	ld	a,#16
3799  0179 42            	mul	x,a
3800  017a 9f            	ld	a,xl
3801  017b cd0065        	call	_SPI_sendchar
3803                     ; 58 	LCD_DELAY()
3806  017e 9d            nop
3811  017f 9d            nop
3816  0180 9d            nop
3821  0181 9d            nop
3826  0182 9d            nop
3828                     ; 59 	E_CLK
3830  0183 721b5014      	bres	_PE_ODR,#5
3831                     ; 60 	LCD_DELAY()
3834  0187 9d            nop
3839  0188 9d            nop
3844  0189 9d            nop
3849  018a 9d            nop
3854  018b 9d            nop
3856                     ; 61 }
3859  018c 84            	pop	a
3860  018d 81            	ret
3906                     ; 63 void refreshLCD(const u8 *lcd_stack)
3906                     ; 64 {
3907                     	switch	.text
3908  018e               _refreshLCD:
3910  018e 89            	pushw	x
3911  018f 88            	push	a
3912       00000001      OFST:	set	1
3915                     ; 66 	sendCodeST7920(0x02);	//地址归位
3917  0190 a602          	ld	a,#2
3918  0192 ad92          	call	_sendCodeST7920
3920                     ; 67 	for(addr=0;addr<16;addr++)
3922  0194 0f01          	clr	(OFST+0,sp)
3923  0196               L1632:
3924                     ; 69 		sendDataST7920(*(lcd_stack + addr));
3926  0196 7b02          	ld	a,(OFST+1,sp)
3927  0198 97            	ld	xl,a
3928  0199 7b03          	ld	a,(OFST+2,sp)
3929  019b 1b01          	add	a,(OFST+0,sp)
3930  019d 2401          	jrnc	L43
3931  019f 5c            	incw	x
3932  01a0               L43:

⌨️ 快捷键说明

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