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

📄 main.s

📁 有遥控的温度计,用dS1302做时钟芯片
💻 S
📖 第 1 页 / 共 2 页
字号:
X30:
	cpi R22,8
	ldi R30,0
	cpc R23,R30
	brne X31
	rjmp L96
X31:
	cpi R22,9
	ldi R30,0
	cpc R23,R30
	brne X32
	rjmp L97
X32:
	cpi R22,10
	ldi R30,0
	cpc R23,R30
	brne X33
	rjmp L98
X33:
	rjmp L85
X7:
	.dbline 133
; 	  {
L88:
	.dbline 134
; 		case 0 :write_data(0x88,((read_data(0x89))&0x0f)|(t<<4));;break;//0
	ldi R16,137
	rcall _read_data
	mov R24,R20
	andi R24,#0x0F
	swap R24
	mov R18,R16
	andi R18,15
	or R18,R24
	ldi R16,136
	rcall _write_data
	.dbline 134
	.dbline 134
	rjmp L86
L89:
	.dbline 135
; 		case 1 :write_data(0x88,((read_data(0x89))&0xf0)|t);;break;
	ldi R16,137
	rcall _read_data
	mov R18,R16
	andi R18,240
	or R18,R20
	ldi R16,136
	rcall _write_data
	.dbline 135
	.dbline 135
	rjmp L86
L90:
	.dbline 136
; 		case 2 :write_data(0x86,((read_data(0x87))&0x0f)|(t<<4));;break;
	ldi R16,135
	rcall _read_data
	mov R24,R20
	andi R24,#0x0F
	swap R24
	mov R18,R16
	andi R18,15
	or R18,R24
	ldi R16,134
	rcall _write_data
	.dbline 136
	.dbline 136
	rjmp L86
L91:
	.dbline 137
; 		case 3 :write_data(0x86,((read_data(0x87))&0xf0)|t);;break;
	ldi R16,135
	rcall _read_data
	mov R18,R16
	andi R18,240
	or R18,R20
	ldi R16,134
	rcall _write_data
	.dbline 137
	.dbline 137
	rjmp L86
L92:
	.dbline 138
; 		case 4 :write_data(0x84,((read_data(0x85))&0x0f)|(t<<4));;break;
	ldi R16,133
	rcall _read_data
	mov R24,R20
	andi R24,#0x0F
	swap R24
	mov R18,R16
	andi R18,15
	or R18,R24
	ldi R16,132
	rcall _write_data
	.dbline 138
	.dbline 138
	rjmp L86
L93:
	.dbline 139
; 		case 5 :write_data(0x84,((read_data(0x85))&0xf0)|t);;break;
	ldi R16,133
	rcall _read_data
	mov R18,R16
	andi R18,240
	or R18,R20
	ldi R16,132
	rcall _write_data
	.dbline 139
	.dbline 139
	rjmp L86
L94:
	.dbline 140
; 		case 6 :write_data(0x82,((read_data(0x83))&0x0f)|(t<<4));;break;
	ldi R16,131
	rcall _read_data
	mov R24,R20
	andi R24,#0x0F
	swap R24
	mov R18,R16
	andi R18,15
	or R18,R24
	ldi R16,130
	rcall _write_data
	.dbline 140
	.dbline 140
	rjmp L86
L95:
	.dbline 141
; 		case 7 :write_data(0x82,((read_data(0x83))&0xf0)|t);;break;
	ldi R16,131
	rcall _read_data
	mov R18,R16
	andi R18,240
	or R18,R20
	ldi R16,130
	rcall _write_data
	.dbline 141
	.dbline 141
	rjmp L86
L96:
	.dbline 142
; 		case 8 :write_data(0x80,((read_data(0x81))&0x0f)|(t<<4));;break;
	ldi R16,129
	rcall _read_data
	mov R24,R20
	andi R24,#0x0F
	swap R24
	mov R18,R16
	andi R18,15
	or R18,R24
	ldi R16,128
	rcall _write_data
	.dbline 142
	.dbline 142
	rjmp L86
L97:
	.dbline 143
; 		case 9 :write_data(0x80,((read_data(0x81))&0xf0)|t);;break;
	ldi R16,129
	rcall _read_data
	mov R18,R16
	andi R18,240
	or R18,R20
	ldi R16,128
	rcall _write_data
	.dbline 143
	.dbline 143
	rjmp L86
L98:
	.dbline 144
; 		case 10 :write_data(0x8a,t);;break;
	mov R18,R20
	ldi R16,138
	rcall _write_data
	.dbline 144
	.dbline 144
L85:
L86:
	.dbline 146
; 	  }
; 	LCD_set_xy(9,1);            //这一位抗干拢
	ldi R18,1
	ldi R16,9
	rcall _LCD_set_xy
	.dbline 147
; 	  LCD_write_char(n+48); 
	lds R16,_n
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 148
; 	 }
	rjmp L52
L51:
	.dbline 150
; 	else
; 	  {
	.dbline 151
;      LCD_DATA_PORT=0x01;     		//清屏
	ldi R24,1
	out 0x1b,R24
	.dbline 152
;      command_enable();
	rcall _command_enable
	.dbline 153
;      delay_ms(10);					//等待1.53ms以上
	ldi R16,10
	rcall _delay_ms
	.dbline 154
; 	  }
L52:
L24:
	.dbline 155
;  ret:SEI();
	sei
	.dbline -2
L17:
	adiw R28,2
	rcall pop_gset4
	rcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym r t 20 c
	.dbsym r store 20 i
	.dbsym r user_code 12 i
	.dbsym r data_code 22 i
	.dbsym r i 10 c
	.dbend
	.dbfunc e main _main fV
;              a -> y+10
;           temm -> R10
;          count -> R12
;           temh -> R14
;           teml -> R20
;             th -> y+9
;             tl -> y+8
;              s -> y+7
;              i -> R22
	.even
_main::
	sbiw R28,13
	.dbline -1
	.dbline 161
; }
; /******************************************************
;                          主程序
; ******************************************************/		               
; void main(void)
; {
	.dbline 165
; 
; uchar s,i,th,tl;
;  uchar temh,teml,a,count,temm; 
; init_devices();
	rcall _init_devices
	.dbline 166
; init_1302();
	rcall _init_1302
	.dbline 167
; init_1302();
	rcall _init_1302
	.dbline 168
; init_lcd() ;
	rcall _init_lcd
	.dbline 169
; init_lcd() ;
	rcall _init_lcd
	.dbline 170
; init_time(0x00,0x01,0x02,0x03,0x04,0x05);
	ldi R24,5
	std y+6,R24
	ldi R24,4
	std y+4,R24
	ldi R24,3
	std y+2,R24
	ldi R24,2
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _init_time
	rjmp L101
L100:
	.dbline 172
;    while(1)
;     {
	.dbline 174
; 	 //1302
; 	  LCD_set_xy(0,0);
	clr R18
	clr R16
	rcall _LCD_set_xy
	.dbline 176
; 	  //month
;    	  s=read_data(0x89);
	ldi R16,137
	rcall _read_data
	std y+7,R16
	.dbline 177
; 	  tl=s&0x0f;
	mov R24,R16
	andi R24,15
	std y+8,R24
	.dbline 178
;    	  th=(s>>4);
	ldd R24,y+7
	swap R24
	andi R24,#0x0F
	std y+9,R24
	.dbline 179
;    	  LCD_write_char(th+48);
	mov R16,R24
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 180
;       LCD_write_char(tl+48);
	ldd R16,y+8
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 181
; 	  LCD_write_char(':');
	ldi R16,58
	rcall _LCD_write_char
	.dbline 183
; 	  //day
;    	  s=read_data(0x87);
	ldi R16,135
	rcall _read_data
	std y+7,R16
	.dbline 184
; 	  tl=s&0x0f;
	mov R24,R16
	andi R24,15
	std y+8,R24
	.dbline 185
;    	  th=(s>>4);
	ldd R24,y+7
	swap R24
	andi R24,#0x0F
	std y+9,R24
	.dbline 186
;    	  LCD_write_char(th+48);
	mov R16,R24
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 187
;       LCD_write_char(tl+48);
	ldd R16,y+8
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 188
; 	  LCD_write_char(' ');
	ldi R16,32
	rcall _LCD_write_char
	.dbline 189
; 	  LCD_write_char(' ');
	ldi R16,32
	rcall _LCD_write_char
	.dbline 191
; 	  //hour
;    	  s=read_data(0x85);
	ldi R16,133
	rcall _read_data
	std y+7,R16
	.dbline 192
; 	  tl=s&0x0f;
	mov R24,R16
	andi R24,15
	std y+8,R24
	.dbline 193
;    	  th=(s>>4);
	ldd R24,y+7
	swap R24
	andi R24,#0x0F
	std y+9,R24
	.dbline 194
;    	  LCD_write_char(th+48);
	mov R16,R24
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 195
;       LCD_write_char(tl+48);
	ldd R16,y+8
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 196
; 	  LCD_write_char(':');
	ldi R16,58
	rcall _LCD_write_char
	.dbline 198
; 	  //min
;    	  s=read_data(0x83);
	ldi R16,131
	rcall _read_data
	std y+7,R16
	.dbline 199
; 	  tl=s&0x0f;
	mov R24,R16
	andi R24,15
	std y+8,R24
	.dbline 200
;    	  th=(s>>4);
	ldd R24,y+7
	swap R24
	andi R24,#0x0F
	std y+9,R24
	.dbline 201
;    	  LCD_write_char(th+48);
	mov R16,R24
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 202
;       LCD_write_char(tl+48);
	ldd R16,y+8
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 203
; 	  LCD_write_char(':');
	ldi R16,58
	rcall _LCD_write_char
	.dbline 205
; 	  //sec
;    	  s=read_data(0x81);
	ldi R16,129
	rcall _read_data
	std y+7,R16
	.dbline 206
; 	  tl=s&0x0f;
	mov R24,R16
	andi R24,15
	std y+8,R24
	.dbline 207
;    	  th=(s>>4);
	ldd R24,y+7
	swap R24
	andi R24,#0x0F
	std y+9,R24
	.dbline 208
;    	  LCD_write_char(th+48);
	mov R16,R24
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 209
;       LCD_write_char(tl+48);
	ldd R16,y+8
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 211
;      //date
; 	 s=read_data(0x8b);
	ldi R16,139
	rcall _read_data
	std y+7,R16
	.dbline 212
; 	 tl=s&0x0f;
	mov R24,R16
	andi R24,15
	std y+8,R24
	.dbline 213
; 	  switch(tl)
	mov R2,R24
	clr R3
	std y+12,R3
	std y+11,R2
	mov R24,R2
	mov R25,R3
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L106
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L108
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L110
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	breq L112
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	breq L114
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	breq L116
	cpi R24,7
	ldi R30,0
	cpc R25,R30
	breq L118
	rjmp L103
X34:
	.dbline 214
; 	  		{
L106:
	.dbline 215
; 			case 1:LCD_write_string(0,1,"monday");break;
	ldi R24,<L107
	ldi R25,>L107
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 215
	rjmp L104
L108:
	.dbline 216
; 			case 2:LCD_write_string(0,1,"tuesday");break;
	ldi R24,<L109
	ldi R25,>L109
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 216
	rjmp L104
L110:
	.dbline 217
; 			case 3:LCD_write_string(0,1,"wednesday");break;
	ldi R24,<L111
	ldi R25,>L111
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 217
	rjmp L104
L112:
	.dbline 218
; 			case 4:LCD_write_string(0,1,"thursday");break;
	ldi R24,<L113
	ldi R25,>L113
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 218
	rjmp L104
L114:
	.dbline 219
; 			case 5:LCD_write_string(0,1,"friday");break;
	ldi R24,<L115
	ldi R25,>L115
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 219
	rjmp L104
L116:
	.dbline 220
; 			case 6:LCD_write_string(0,1,"saturday");break;
	ldi R24,<L117
	ldi R25,>L117
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 220
	rjmp L104
L118:
	.dbline 221
; 			case 7:LCD_write_string(0,1,"sunday");break;
	ldi R24,<L119
	ldi R25,>L119
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 221
L103:
L104:
	.dbline 224
; 			}
;     //18b20 
;      a=init_1820();               //复位18b20   
	rcall _init_1820
	std y+10,R16
	.dbline 225
;       write_1820(0xCC);              // SKIP THE ROM
	ldi R16,204
	rcall _write_1820
	.dbline 226
;       write_1820(0x44);              //启动温度转换
	ldi R16,68
	rcall _write_1820
	.dbline 227
; 	  for(i=0;i<200;i++)           //每次转换需要延时200ms以上 
	clr R22
	rjmp L123
L120:
	.dbline 228
	ldi R16,200
	rcall _delay
L121:
	.dbline 227
	inc R22
L123:
	.dbline 227
	cpi R22,200
	brlo L120
	.dbline 229
	rcall _init_1820
	std y+10,R16
	.dbline 230
	ldi R16,204
	rcall _write_1820
	.dbline 231
	ldi R16,190
	rcall _write_1820
	.dbline 232
	rcall _read_1820
	mov R20,R16
	.dbline 233
	rcall _read_1820
	mov R14,R16
	.dbline 234
	mov R10,R20
	.dbline 235
	mov R24,R10
	andi R24,15
	mov R10,R24
	.dbline 236
	mov R24,R20
	swap R24
	andi R24,#0x0F
	mov R20,R24
	.dbline 237
	mov R24,R14
	andi R24,#0x0F
	swap R24
	mov R14,R24
	.dbline 238
	mov R12,R20
	or R12,R24
	.dbline 239
	ldi R17,10
	mov R16,R12
	rcall div8u
	sts _temh_d,R16
	.dbline 240
	mov R18,R10
	clr R19
	ldi R16,6
	ldi R17,0
	rcall mpy16s
	ldi R18,10
	ldi R19,0
	rcall div16s
	sts _temm_d,R16
	.dbline 241
	ldi R17,10
	mov R16,R12
	rcall mod8u
	sts _teml_d,R16
	.dbline 242
	ldi R16,200
	rcall _delay
	.dbline 243
	ldi R18,1
	ldi R16,10
	rcall _LCD_set_xy
	.dbline 244
	lds R16,_temh_d
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 245
	ldi R18,1
	ldi R16,11
	rcall _LCD_set_xy
	.dbline 246
	lds R16,_teml_d
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 247
	ldi R18,1
	ldi R16,12
	rcall _LCD_set_xy
	.dbline 248
	ldi R16,46
	rcall _LCD_write_char
	.dbline 249
	ldi R18,1
	ldi R16,13
	rcall _LCD_set_xy
	.dbline 250
	lds R16,_temm_d
	subi R16,208    ; addi 48
	rcall _LCD_write_char
	.dbline 251
	ldi R24,<L124
	ldi R25,>L124
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,14
	rcall _LCD_write_string
	.dbline 252
L101:
	.dbline 171
	rjmp L100
X35:
	.dbline -2
L99:
	adiw R28,13
	.dbline 0 ; func end
	ret
	.dbsym l a 10 c
	.dbsym r temm 10 c
	.dbsym r count 12 c
	.dbsym r temh 14 c
	.dbsym r teml 20 c
	.dbsym l th 9 c
	.dbsym l tl 8 c
	.dbsym l s 7 c
	.dbsym r i 22 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
_temm_d::
	.blkb 1
	.dbsym e temm_d _temm_d c
_teml_d::
	.blkb 1
	.dbsym e teml_d _teml_d c
_temh_d::
	.blkb 1
	.dbsym e temh_d _temh_d c
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L124:
	.blkb 3
	.area idata
	.byte 96,'C,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L119:
	.blkb 7
	.area idata
	.byte 's,'u,'n,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L117:
	.blkb 9
	.area idata
	.byte 's,'a,'t,'u,'r,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L115:
	.blkb 7
	.area idata
	.byte 'f,'r,'i,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L113:
	.blkb 9
	.area idata
	.byte 't,'h,'u,'r,'s,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L111:
	.blkb 10
	.area idata
	.byte 'w,'e,'d,'n,'e,'s,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L109:
	.blkb 8
	.area idata
	.byte 't,'u,'e,'s,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L107:
	.blkb 7
	.area idata
	.byte 'm,'o,'n,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c
L53:
	.blkb 2
	.area idata
	.byte 's,0
	.area data(ram, con, rel)
	.dbfile D:\时钟芯片\1302\1302-162\main.c

⌨️ 快捷键说明

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