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

📄 main.ls

📁 STM8S105S4程序
💻 LS
📖 第 1 页 / 共 2 页
字号:
   1                     ; C Compiler for STM8 (COSMIC Software)
   2                     ; Parser V4.9.10 - 10 Feb 2011
   3                     ; Generator (Limited) V4.3.6 - 15 Feb 2011
2786                     	bsct
2787  0000               _a:
2788  0000 c0            	dc.b	192
2789  0001 f9            	dc.b	249
2790  0002 a4            	dc.b	164
2791  0003 b0            	dc.b	176
2792  0004 99            	dc.b	153
2793  0005 92            	dc.b	146
2794  0006 82            	dc.b	130
2795  0007 f8            	dc.b	248
2796  0008 80            	dc.b	128
2797  0009 90            	dc.b	144
2798  000a bf            	dc.b	191
2799  000b 7f            	dc.b	127
2800  000c               _table0:
2801  000c 546865207465  	dc.b	"The temperature",0
2802  001c               _table1:
2803  001c 69733a00      	dc.b	"is:",0
2842                     ; 32 void init_stm8(void)
2842                     ; 33 {
2844                     	switch	.text
2845  0000               _init_stm8:
2849                     ; 34 		PA_DDR=0x70;
2851  0000 35705002      	mov	_PA_DDR,#112
2852                     ; 35     PA_CR1=0x70;
2854  0004 35705003      	mov	_PA_CR1,#112
2855                     ; 36     PA_CR2=0x00;
2857  0008 725f5004      	clr	_PA_CR2
2858                     ; 38     PB_DDR=0xff;
2860  000c 35ff5007      	mov	_PB_DDR,#255
2861                     ; 39     PB_CR1=0xff;
2863  0010 35ff5008      	mov	_PB_CR1,#255
2864                     ; 40     PB_CR2=0x00;
2866  0014 725f5009      	clr	_PB_CR2
2867                     ; 46 	  CLK_SWR = 0xE1;      
2869  0018 35e150c4      	mov	_CLK_SWR,#225
2870                     ; 47     CLK_CKDIVR = 0x19;    //频率设为1MHz
2872  001c 351950c6      	mov	_CLK_CKDIVR,#25
2873                     ; 48 }
2876  0020 81            	ret
2915                     ; 51 void write_com(uchar com)
2915                     ; 52 {
2916                     	switch	.text
2917  0021               _write_com:
2921                     ; 53     RS=0;
2923  0021 72195000      	bres	_RS
2924                     ; 54     RW=0;
2926  0025 721b5000      	bres	_RW
2927                     ; 55     PB_ODR=com;
2929  0029 c75005        	ld	_PB_ODR,a
2930                     ; 56     delay_1ms(5);
2932  002c ae0005        	ldw	x,#5
2933  002f cd00d1        	call	_delay_1ms
2935                     ; 57     E=1;
2937  0032 721c5000      	bset	_E
2938                     ; 58     E=0;	
2940  0036 721d5000      	bres	_E
2941                     ; 59 }
2944  003a 81            	ret
2983                     ; 61 void write_data(uchar date)
2983                     ; 62 {
2984                     	switch	.text
2985  003b               _write_data:
2989                     ; 63     RS=1;
2991  003b 72185000      	bset	_RS
2992                     ; 64     RW=0;
2994  003f 721b5000      	bres	_RW
2995                     ; 65     PB_ODR=date;
2997  0043 c75005        	ld	_PB_ODR,a
2998                     ; 66     delay_1ms(5);
3000  0046 ae0005        	ldw	x,#5
3001  0049 cd00d1        	call	_delay_1ms
3003                     ; 67     E=1;
3005  004c 721c5000      	bset	_E
3006                     ; 68     E=0;	
3008  0050 721d5000      	bres	_E
3009                     ; 69 }
3012  0054 81            	ret
3036                     ; 71 void init(void)
3036                     ; 72 {
3037                     	switch	.text
3038  0055               _init:
3042                     ; 73     write_com(0x38);
3044  0055 a638          	ld	a,#56
3045  0057 adc8          	call	_write_com
3047                     ; 74     write_com(0x0c);
3049  0059 a60c          	ld	a,#12
3050  005b adc4          	call	_write_com
3052                     ; 75     write_com(0x06);
3054  005d a606          	ld	a,#6
3055  005f adc0          	call	_write_com
3057                     ; 76     write_com(0x01);
3059  0061 a601          	ld	a,#1
3060  0063 adbc          	call	_write_com
3062                     ; 77     write_com(0x80+0x00);	
3064  0065 a680          	ld	a,#128
3065  0067 adb8          	call	_write_com
3067                     ; 78 }
3070  0069 81            	ret
3107                     ; 80 void display(uchar *s)         
3107                     ; 81 {  
3108                     	switch	.text
3109  006a               _display:
3111  006a 89            	pushw	x
3112       00000000      OFST:	set	0
3115  006b 2012          	jra	L1602
3116  006d               L7502:
3117                     ; 84        write_data(*s++);
3119  006d 1e01          	ldw	x,(OFST+1,sp)
3120  006f 1c0001        	addw	x,#1
3121  0072 1f01          	ldw	(OFST+1,sp),x
3122  0074 1d0001        	subw	x,#1
3123  0077 f6            	ld	a,(x)
3124  0078 adc1          	call	_write_data
3126                     ; 85     delay_1ms(90);
3128  007a ae005a        	ldw	x,#90
3129  007d ad52          	call	_delay_1ms
3131  007f               L1602:
3132                     ; 82     while(*s>0)
3134  007f 1e01          	ldw	x,(OFST+1,sp)
3135  0081 7d            	tnz	(x)
3136  0082 26e9          	jrne	L7502
3137                     ; 87 }
3140  0084 85            	popw	x
3141  0085 81            	ret
3177                     ; 89 void main()
3177                     ; 90 { 
3178                     	switch	.text
3179  0086               _main:
3183                     ; 91 		init_stm8();
3185  0086 cd0000        	call	_init_stm8
3187                     ; 92     init();            //初始化1602
3189  0089 adca          	call	_init
3191                     ; 93     init_Ds18B20();    //初始化18B20
3193  008b ad64          	call	_init_Ds18B20
3195                     ; 94     write_byte(0xcc);
3197  008d a6cc          	ld	a,#204
3198  008f cd011c        	call	_write_byte
3200                     ; 95     write_byte(0x44);
3202  0092 a644          	ld	a,#68
3203  0094 cd011c        	call	_write_byte
3205                     ; 96     delay(300);
3207  0097 a62c          	ld	a,#44
3208  0099 ad2c          	call	_delay
3210                     ; 97     display(table0);
3212  009b ae000c        	ldw	x,#_table0
3213  009e adca          	call	_display
3215                     ; 98     write_com(0x80+0x40+0x02);
3217  00a0 a6c2          	ld	a,#194
3218  00a2 cd0021        	call	_write_com
3220                     ; 99     display(table1);            //以上语句为显示字符"The temperature is:"
3222  00a5 ae001c        	ldw	x,#_table1
3223  00a8 adc0          	call	_display
3225  00aa               L5702:
3226                     ; 102         readtemperature();        //读温度数据
3228  00aa cd01b0        	call	_readtemperature
3230                     ; 103         write_com(0x80+0x40+0x05);  //把1602地址指针指向第二行第6列
3232  00ad a6c5          	ld	a,#197
3233  00af cd0021        	call	_write_com
3235                     ; 104         for(i=0;i<8;i++)            //显示温度数据,包括一个正负温度符号位,一个小数点,四个数据,还有两位显示℃
3237  00b2 3f00          	clr	_i
3238  00b4               L1012:
3239                     ; 106             write_data(table2[i]);
3241  00b4 b600          	ld	a,_i
3242  00b6 5f            	clrw	x
3243  00b7 97            	ld	xl,a
3244  00b8 e601          	ld	a,(_table2,x)
3245  00ba cd003b        	call	_write_data
3247                     ; 104         for(i=0;i<8;i++)            //显示温度数据,包括一个正负温度符号位,一个小数点,四个数据,还有两位显示℃
3249  00bd 3c00          	inc	_i
3252  00bf b600          	ld	a,_i
3253  00c1 a108          	cp	a,#8
3254  00c3 25ef          	jrult	L1012
3256  00c5 20e3          	jra	L5702
3290                     ; 111 void delay(uchar t)
3290                     ; 112 {
3291                     	switch	.text
3292  00c7               _delay:
3294  00c7 88            	push	a
3295       00000000      OFST:	set	0
3298  00c8               L7212:
3299                     ; 113     while(t--);
3301  00c8 7b01          	ld	a,(OFST+1,sp)
3302  00ca 0a01          	dec	(OFST+1,sp)
3303  00cc 4d            	tnz	a
3304  00cd 26f9          	jrne	L7212
3305                     ; 114 }
3308  00cf 84            	pop	a
3309  00d0 81            	ret
3352                     ; 116 void delay_1ms(uint a)
3352                     ; 117 {
3353                     	switch	.text
3354  00d1               _delay_1ms:
3356  00d1 89            	pushw	x
3357  00d2 88            	push	a
3358       00000001      OFST:	set	1
3361  00d3 200a          	jra	L7512
3362  00d5               L5512:
3363                     ; 120     for(i=0;i<120;i++);
3365  00d5 0f01          	clr	(OFST+0,sp)
3366  00d7               L3612:
3370  00d7 0c01          	inc	(OFST+0,sp)
3373  00d9 7b01          	ld	a,(OFST+0,sp)
3374  00db a178          	cp	a,#120
3375  00dd 25f8          	jrult	L3612
3376  00df               L7512:
3377                     ; 119     while(a--)
3379  00df 1e02          	ldw	x,(OFST+1,sp)
3380  00e1 1d0001        	subw	x,#1
3381  00e4 1f02          	ldw	(OFST+1,sp),x
3382  00e6 1c0001        	addw	x,#1
3383  00e9 a30000        	cpw	x,#0
3384  00ec 26e7          	jrne	L5512
3385                     ; 121 }
3388  00ee 5b03          	addw	sp,#3
3389  00f0 81            	ret
3428                     ; 123 void init_Ds18B20(void)
3428                     ; 124 {
3429                     	switch	.text
3430  00f1               _init_Ds18B20:
3432  00f1 88            	push	a
3433       00000001      OFST:	set	1
3436                     ; 127 	  PG_DDR=0x02;
3438  00f2 35025020      	mov	_PG_DDR,#2
3439                     ; 128     PG_CR1=0x02;   //设置IO口为推挽输出模式
3441  00f6 35025021      	mov	_PG_CR1,#2
3442                     ; 129     PG_CR2=0x00;
3444  00fa 725f5022      	clr	_PG_CR2
3445                     ; 131     DQ=1;
3447  00fe 7212501e      	bset	_DQ
3448                     ; 132     delay(2);
3450  0102 a602          	ld	a,#2
3451  0104 adc1          	call	_delay
3453                     ; 133     DQ=0;
3455  0106 7213501e      	bres	_DQ
3456                     ; 134     delay(200);
3458  010a a6c8          	ld	a,#200
3459  010c adb9          	call	_delay
3461                     ; 135     DQ=1;
3463  010e 7212501e      	bset	_DQ
3464                     ; 136     delay(50);
3466  0112 a632          	ld	a,#50
3467  0114 adb1          	call	_delay
3469                     ; 137     n=DQ;
3471                     ; 138     delay(100);    //以上语句为检查是否存在18B20,若n=0说明 18B20存在
3473  0116 a664          	ld	a,#100
3474  0118 adad          	call	_delay
3476                     ; 139 }
3479  011a 84            	pop	a
3480  011b 81            	ret
3529                     ; 141 void write_byte(uchar date)
3529                     ; 142 {
3530                     	switch	.text
3531  011c               _write_byte:

⌨️ 快捷键说明

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