📄 温湿度传感器.lis
字号:
025A 320C add R3,R2
025C 20900600 lds R2,_U8RH_data_L_temp
0260 320C add R3,R2
0262 30920F00 sts _U8temp,R3
0266 .dbline 216
0266 ; if(U8temp==U8checkdata_temp)
0266 20900500 lds R2,_U8checkdata_temp
026A 3214 cp R3,R2
026C A1F4 brne L64
026E X25:
026E .dbline 217
026E ; {
026E .dbline 218
026E ; U8RH_data_H=U8T_data_H_temp;
026E 20900900 lds R2,_U8T_data_H_temp
0272 20920C00 sts _U8RH_data_H,R2
0276 .dbline 219
0276 ; U8RH_data_L=U8T_data_L_temp;
0276 20900800 lds R2,_U8T_data_L_temp
027A 20920B00 sts _U8RH_data_L,R2
027E .dbline 220
027E ; U8T_data_H=U8RH_data_H_temp;
027E 20900700 lds R2,_U8RH_data_H_temp
0282 20920E00 sts _U8T_data_H,R2
0286 .dbline 221
0286 ; U8T_data_L=U8RH_data_L_temp;
0286 20900600 lds R2,_U8RH_data_L_temp
028A 20920D00 sts _U8T_data_L,R2
028E .dbline 222
028E ; U8checkdata=U8checkdata_temp;
028E 20900500 lds R2,_U8checkdata_temp
0292 20920A00 sts _U8checkdata,R2
0296 .dbline 223
0296 ; }//fi
0296 L64:
0296 .dbline 226
0296 ;
0296 ;
0296 ; COM_IN;
0296 A498 cbi 0x14,4
0298 .dbline 227
0298 ; COM_SET;
0298 AC9A sbi 0x15,4
029A .dbline -2
029A L36:
029A .dbline 0 ; func end
029A 0895 ret
029C .dbend
029C .dbfunc e Uart_Init _Uart_Init fV
.even
029C _Uart_Init::
029C .dbline -1
029C .dbline 238
029C ;
029C ; }
029C ;
029C ; /*
029C ; 串口初始化函数
029C ; 系统频率:2MHz
029C ; 停止位:1
029C ; 波特率:9600
029C ; 数据长度:8
029C ; */
029C ; void Uart_Init(void) {
029C .dbline 239
029C ; UCSRA = 0x02; /*2倍速 */
029C 82E0 ldi R24,2
029E 8BB9 out 0xb,R24
02A0 .dbline 240
02A0 ; UCSRB = 0x18; /*允许接收和发送*/
02A0 88E1 ldi R24,24
02A2 8AB9 out 0xa,R24
02A4 .dbline 241
02A4 ; UCSRC = 0x06; /*8位数据 */
02A4 86E0 ldi R24,6
02A6 80BD out 0x20,R24
02A8 .dbline 242
02A8 ; UBRRH = 0x00;
02A8 2224 clr R2
02AA 20BC out 0x20,R2
02AC .dbline 245
02AC ; //UBRRL = 47; /*9600 3.6864M */
02AC ; //UBRRL = 95; /*9600 7.3728M */
02AC ; UBRRL = 103; /*9600 8.0000M */
02AC 87E6 ldi R24,103
02AE 89B9 out 0x9,R24
02B0 .dbline -2
02B0 L66:
02B0 .dbline 0 ; func end
02B0 0895 ret
02B2 .dbend
02B2 .dbfunc e Uart_Transmit _Uart_Transmit fV
02B2 ; i -> R16
.even
02B2 _Uart_Transmit::
02B2 .dbline -1
02B2 .dbline 252
02B2 ; }
02B2 ;
02B2 ; /*
02B2 ; 串数据发送
02B2 ; 查询方式发送
02B2 ; */
02B2 ; void Uart_Transmit(unsigned char i) {
02B2 L68:
02B2 .dbline 255
02B2 ;
02B2 ; /* 等待发送缓冲器为空*/
02B2 ; while (!(UCSRA & (1<<UDRE)));
02B2 L69:
02B2 .dbline 255
02B2 5D9B sbis 0xb,5
02B4 FECF rjmp L68
02B6 X26:
02B6 .dbline 257
02B6 ; /* 将数据放入缓冲器,发送数据*/
02B6 ; UDR = i;
02B6 0CB9 out 0xc,R16
02B8 .dbline -2
02B8 L67:
02B8 .dbline 0 ; func end
02B8 0895 ret
02BA .dbsym r i 16 c
02BA .dbend
02BA .dbfunc e Uart_Receive _Uart_Receive fc
.even
02BA _Uart_Receive::
02BA .dbline -1
02BA .dbline 264
02BA ; }
02BA ;
02BA ; /*
02BA ; 串数据接收
02BA ; 查询方式接收
02BA ; */
02BA ; unsigned char Uart_Receive( void ) {
02BA L72:
02BA .dbline 267
02BA ;
02BA ; /* 等待接收数据*/
02BA ; while (!(UCSRA & (1<<RXC)));
02BA L73:
02BA .dbline 267
02BA 5F9B sbis 0xb,7
02BC FECF rjmp L72
02BE X27:
02BE .dbline 270
02BE ; /* 从缓冲器中获取并返回数据*/
02BE ; // Uart_Transmit(UDR);
02BE ; return UDR;
02BE 0CB1 in R16,0xc
02C0 .dbline -2
02C0 L71:
02C0 .dbline 0 ; func end
02C0 0895 ret
02C2 .dbend
02C2 .dbfunc e init_devices _init_devices fV
02C2 ; i -> <dead>
.even
02C2 _init_devices::
02C2 .dbline -1
02C2 .dbline 274
02C2 ; }
02C2 ;
02C2 ; void init_devices(void)
02C2 ; {
02C2 .dbline 276
02C2 ; unsigned char i;
02C2 ; CLI();
02C2 F894 cli
02C4 .dbline 277
02C4 ; port_init();
02C4 9DDE xcall _port_init
02C6 .dbline 278
02C6 ; watchdog_init();
02C6 A8DE xcall _watchdog_init
02C8 .dbline 279
02C8 ; Uart_Init();
02C8 E9DF xcall _Uart_Init
02CA .dbline 280
02CA ; MCUCR = 0x03;
02CA 83E0 ldi R24,3
02CC 85BF out 0x35,R24
02CE .dbline 281
02CE ; GICR = 0x00; //关外部中断0
02CE 2224 clr R2
02D0 2BBE out 0x3b,R2
02D2 .dbline 282
02D2 ; TIMSK = 0x00; //关定时器1中断
02D2 29BE out 0x39,R2
02D4 .dbline 283
02D4 ; SEI(); //re-enable interrupts
02D4 7894 sei
02D6 .dbline -2
02D6 L75:
02D6 .dbline 0 ; func end
02D6 0895 ret
02D8 .dbsym l i 1 c
02D8 .dbend
02D8 .dbfunc e main _main fV
.even
02D8 _main::
02D8 .dbline -1
02D8 .dbline 299
02D8 ;
02D8 ; }
02D8 ; /**************************************************************************
02D8 ;
02D8 ;
02D8 ;
02D8 ; 主函数
02D8 ;
02D8 ;
02D8 ;
02D8 ;
02D8 ; **************************************************************************/
02D8 ;
02D8 ;
02D8 ; void main(void)
02D8 ; {
02D8 .dbline 301
02D8 ;
02D8 ; init_devices() ;
02D8 F4DF xcall _init_devices
02DA .dbline 302
02DA ; COM_IN;
02DA A498 cbi 0x14,4
02DC .dbline 303
02DC ; COM_SET;
02DC AC9A sbi 0x15,4
02DE 23C0 xjmp L78
02E0 L77:
02E0 .dbline 306
02E0 ;
02E0 ; while(1)
02E0 ; {
02E0 .dbline 309
02E0 ;
02E0 ; //读DHT21
02E0 ; RH();
02E0 47DF xcall _RH
02E2 .dbline 312
02E2 ;
02E2 ; //由串口发送数据
02E2 ; Uart_Transmit(U8RH_data_H);
02E2 00910C00 lds R16,_U8RH_data_H
02E6 E5DF xcall _Uart_Transmit
02E8 .dbline 313
02E8 ; Uart_Transmit(U8RH_data_L);
02E8 00910B00 lds R16,_U8RH_data_L
02EC E2DF xcall _Uart_Transmit
02EE .dbline 314
02EE ; Uart_Transmit(U8T_data_H);
02EE 00910E00 lds R16,_U8T_data_H
02F2 DFDF xcall _Uart_Transmit
02F4 .dbline 315
02F4 ; Uart_Transmit(U8T_data_L);
02F4 00910D00 lds R16,_U8T_data_L
02F8 DCDF xcall _Uart_Transmit
02FA .dbline 316
02FA ; Uart_Transmit(U8checkdata);
02FA 00910A00 lds R16,_U8checkdata
02FE D9DF xcall _Uart_Transmit
0300 .dbline 319
0300 ;
0300 ;
0300 ; Uart_Transmit(U8checkdata);
0300 00910A00 lds R16,_U8checkdata
0304 D6DF xcall _Uart_Transmit
0306 .dbline 321
0306 ; //延时2S
0306 ; for(U8temp=0;U8temp<200;U8temp++)
0306 2224 clr R2
0308 20920F00 sts _U8temp,R2
030C 08C0 xjmp L83
030E L80:
030E .dbline 322
030E ; {
030E .dbline 323
030E ; DelaymS(10);
030E 0AE0 ldi R16,10
0310 10E0 ldi R17,0
0312 8BDE xcall _DelaymS
0314 .dbline 325
0314 ;
0314 ; }//rof
0314 L81:
0314 .dbline 321
0314 80910F00 lds R24,_U8temp
0318 8F5F subi R24,255 ; addi 1
031A 80930F00 sts _U8temp,R24
031E L83:
031E .dbline 321
031E 80910F00 lds R24,_U8temp
0322 883C cpi R24,200
0324 A0F3 brlo L80
0326 X28:
0326 .dbline 327
0326 ;
0326 ; }
0326 L78:
0326 .dbline 305
0326 DCCF xjmp L77
0328 X29:
0328 .dbline -2
0328 L76:
0328 .dbline 0 ; func end
0328 0895 ret
032A .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\AVR自编程序\11avr实验板\20温湿~1\温湿度传感器.c
0000 _ReceiveLowByte::
0000 .blkb 2
0002 .dbsym e ReceiveLowByte _ReceiveLowByte i
0002 _ReceiveHighByte::
0002 .blkb 2
0004 .dbsym e ReceiveHighByte _ReceiveHighByte i
0004 _U8comdata::
0004 .blkb 1
0005 .dbsym e U8comdata _U8comdata c
0005 _U8checkdata_temp::
0005 .blkb 1
0006 .dbsym e U8checkdata_temp _U8checkdata_temp c
0006 _U8RH_data_L_temp::
0006 .blkb 1
0007 .dbsym e U8RH_data_L_temp _U8RH_data_L_temp c
0007 _U8RH_data_H_temp::
0007 .blkb 1
0008 .dbsym e U8RH_data_H_temp _U8RH_data_H_temp c
0008 _U8T_data_L_temp::
0008 .blkb 1
0009 .dbsym e U8T_data_L_temp _U8T_data_L_temp c
0009 _U8T_data_H_temp::
0009 .blkb 1
000A .dbsym e U8T_data_H_temp _U8T_data_H_temp c
000A _U8checkdata::
000A .blkb 1
000B .dbsym e U8checkdata _U8checkdata c
000B _U8RH_data_L::
000B .blkb 1
000C .dbsym e U8RH_data_L _U8RH_data_L c
000C _U8RH_data_H::
000C .blkb 1
000D .dbsym e U8RH_data_H _U8RH_data_H c
000D _U8T_data_L::
000D .blkb 1
000E .dbsym e U8T_data_L _U8T_data_L c
000E _U8T_data_H::
000E .blkb 1
000F .dbsym e U8T_data_H _U8T_data_H c
000F _U8temp::
000F .blkb 1
0010 .dbsym e U8temp _U8temp c
0010 _U8count::
0010 .blkb 1
0011 .dbsym e U8count _U8count c
0011 _k::
0011 .blkb 1
0012 .dbsym e k _k c
0012 _U8FLAG::
0012 .blkb 1
0013 .dbsym e U8FLAG _U8FLAG c
0013 _i::
0013 .blkb 1
0014 .dbsym e i _i c
0014 ;
0014 ; }
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
0014 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -