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

📄 rtc.lst

📁 AVRkaifashili.rar
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0395 1A20      SUB	R2,R16
    0396 2FE4      MOV	R30,R20
    0397 2FF5      MOV	R31,R21
    0398 8627      STD	Z+15,R2
(0343) }
    0399 D0D7      RCALL	pop_gset2
    039A 9508      RET
_DSWrite_Byte:
  clear                --> R20
  Data                 --> R18
  Address              --> R16
    039B D0DD      RCALL	push_gset1
(0344) 
(0345) //***************************通过SPI接口写数据函数*****************//
(0346) //函数参数说明:
(0347) //Address:DS1722寄存器地址
(0348) //Data:写入的数据
(0349) void DSWrite_Byte(uchar Address,uchar Data)
(0350) {uchar clear;
(0351)  PORTB=PORTB|0x10;           //使能SPI器件
    039C 9AC4      SBI	0x18,4
(0352)  SPDR=Address;
    039D B90F      OUT	0x0F,R16
(0353)  while(!(SPSR&0x80)) {;}
    039E 9B77      SBIS	0x0E,7
    039F CFFE      RJMP	0x039E
(0354)  clear=SPSR;
    03A0 B14E      IN	R20,0x0E
(0355)  clear=SPDR;
    03A1 B14F      IN	R20,0x0F
(0356)  SPDR=Data;
    03A2 B92F      OUT	0x0F,R18
(0357)  while(!(SPSR&0x80)) {;}
    03A3 9B77      SBIS	0x0E,7
    03A4 CFFE      RJMP	0x03A3
(0358)  clear=SPSR;
    03A5 B14E      IN	R20,0x0E
(0359)  clear=SPDR;
    03A6 B14F      IN	R20,0x0F
(0360)  PORTB=PORTB&0xef;
    03A7 B388      IN	R24,0x18
    03A8 7E8F      ANDI	R24,0xEF
    03A9 BB88      OUT	0x18,R24
(0361) }
    03AA D0D1      RCALL	pop_gset1
    03AB 9508      RET
_DSRead_Byte:
  Data                 --> R20
  clear                --> R22
  Address              --> R16
    03AC D0E3      RCALL	push_gset2
(0362) 
(0363) 
(0364) //***************************通过SPI接口读数据函数*****************//
(0365) //函数参数说明:
(0366) //Address:DS1722寄存器地址
(0367) //返回值:读取的温度数据
(0368) uchar DSRead_Byte(uchar Address)
(0369) {uchar clear;
(0370)  uchar Data;
(0371)  PORTB=PORTB|0x10;
    03AD 9AC4      SBI	0x18,4
(0372)  SPDR=Address;
    03AE B90F      OUT	0x0F,R16
(0373)  while(!(SPSR&0x80)) {;}
    03AF 9B77      SBIS	0x0E,7
    03B0 CFFE      RJMP	0x03AF
(0374)  clear=SPSR;
    03B1 B16E      IN	R22,0x0E
(0375)  clear=SPDR;
    03B2 B16F      IN	R22,0x0F
(0376)  SPDR=Address;               //发空数据
    03B3 B90F      OUT	0x0F,R16
(0377)  while(!(SPSR&0x80)) {;}
    03B4 9B77      SBIS	0x0E,7
    03B5 CFFE      RJMP	0x03B4
(0378)  clear=SPSR;
    03B6 B16E      IN	R22,0x0E
(0379)  Data=SPDR;
    03B7 B14F      IN	R20,0x0F
(0380)  PORTB=PORTB&0xef;
    03B8 B388      IN	R24,0x18
    03B9 7E8F      ANDI	R24,0xEF
    03BA BB88      OUT	0x18,R24
(0381)  return(Data);
    03BB 2F04      MOV	R16,R20
    03BC D0B4      RCALL	pop_gset2
    03BD 9508      RET
_main:
  i                    --> Y+4
  SD2303_Controller2   --> R20
  SD2303_Controller1   --> R22
  DS                   --> R20
  SD                   --> Y+26
  Set_Time             --> Y+19
  time                 --> Y+3
    03BE 976B      SBIW	R28,0x1B
(0382) }
(0383)  
(0384) void main(void)
(0385) {uchar i;
(0386)  uchar time[16]={2,0,0,4,1,2,2,7,1,1,7,3,0,0,0,0};
    03BF E18B      LDI	R24,0x1B
    03C0 E090      LDI	R25,0
    03C1 2FEC      MOV	R30,R28
    03C2 2FFD      MOV	R31,R29
    03C3 9633      ADIW	R30,3
    03C4 E100      LDI	R16,0x10
    03C5 E010      LDI	R17,0
    03C6 93FA      ST	R31,-Y
    03C7 93EA      ST	R30,-Y
    03C8 939A      ST	R25,-Y
    03C9 938A      ST	R24,-Y
    03CA D0DD      RCALL	asgncblk
(0387)  uchar Set_Time[7]={0x50,0x30,0x20,0x03,0x05,0x01,0x05};
    03CB E28B      LDI	R24,0x2B
    03CC E090      LDI	R25,0
    03CD 2FEC      MOV	R30,R28
    03CE 2FFD      MOV	R31,R29
    03CF 9673      ADIW	R30,0x13
    03D0 E007      LDI	R16,7
    03D1 E010      LDI	R17,0
    03D2 93FA      ST	R31,-Y
    03D3 93EA      ST	R30,-Y
    03D4 939A      ST	R25,-Y
    03D5 938A      ST	R24,-Y
    03D6 D0D1      RCALL	asgncblk
(0388)      //初始化时间   2005-01-05 Wed 20-30-50
(0389)  uchar SD,DS; 
(0390)  uchar SD2303_Controller1=0x00;              //禁止中断
    03D7 2766      CLR	R22
(0391)  uchar SD2303_Controller2=0x20;              //时间格式:24小时制
    03D8 E240      LDI	R20,0x20
(0392)  DDRA=0xff;                                  //A口输出
    03D9 EF8F      LDI	R24,0xFF
    03DA BB8A      OUT	0x1A,R24
(0393)  DDRC=0xff;                                  //C口输出
    03DB BB84      OUT	0x14,R24
(0394)  DDRD=0x80;                                  //D口最高位输出,其他带上拉输入
    03DC E880      LDI	R24,0x80
    03DD BB81      OUT	0x11,R24
(0395)  PORTD=0x7F;
    03DE E78F      LDI	R24,0x7F
    03DF BB82      OUT	0x12,R24
(0396)  DDRB=0xF3;                                  //B口带第2、3位带上拉输入,其他输出
    03E0 EF83      LDI	R24,0xF3
    03E1 BB87      OUT	0x17,R24
(0397)  PORTB=0xF3;
    03E2 BB88      OUT	0x18,R24
(0398)  Write_1byte(SD2303,0x0e,SD2303_Controller1);//写控制字
    03E3 8368      STD	Y+0,R22
    03E4 E02E      LDI	R18,0xE
    03E5 E604      LDI	R16,0x64
    03E6 DD47      RCALL	_Write_1byte
(0399)  Write_1byte(SD2303,0x0f,SD2303_Controller2);//写控制字
    03E7 8348      STD	Y+0,R20
    03E8 E02F      LDI	R18,0xF
    03E9 E604      LDI	R16,0x64
    03EA DD43      RCALL	_Write_1byte
(0400)  Write_Nbyte(SD2303,0x00,Set_Time,7);        //初始化时间
    03EB E087      LDI	R24,7
    03EC 838A      STD	Y+2,R24
    03ED 2F8C      MOV	R24,R28
    03EE 2F9D      MOV	R25,R29
    03EF 9643      ADIW	R24,0x13
    03F0 8399      STD	Y+1,R25
    03F1 8388      STD	Y+0,R24
    03F2 2722      CLR	R18
    03F3 E604      LDI	R16,0x64
    03F4 DD10      RCALL	_Write_Nbyte
(0401)  SPCR=0b01011100;
    03F5 E58C      LDI	R24,0x5C
    03F6 B98D      OUT	0x0D,R24
(0402)  DSWrite_Byte(0x80,0xf0);                      //DS1722 8位分辨率自由转换模式
    03F7 EF20      LDI	R18,0xF0
    03F8 E800      LDI	R16,0x80
    03F9 DFA1      RCALL	_DSWrite_Byte
    03FA C056      RJMP	0x0451
(0403)  while(1)
(0404) 	{Key_Process();                          //按键处理		
    03FB DD86      RCALL	_Key_Process
(0405) 	 Read_Nbyte(SD2303,0x00,Set_Time,7);     //读取时间
    03FC E087      LDI	R24,7
    03FD 838A      STD	Y+2,R24
    03FE 2F8C      MOV	R24,R28
    03FF 2F9D      MOV	R25,R29
    0400 9643      ADIW	R24,0x13
    0401 8399      STD	Y+1,R25
    0402 8388      STD	Y+0,R24
    0403 2722      CLR	R18
    0404 E604      LDI	R16,0x64
    0405 DD43      RCALL	_Read_Nbyte
(0406)      time[2]=Set_Time[6]>>4;                 //年高位;
    0406 8D89      LDD	R24,Y+25
    0407 9582      SWAP	R24
    0408 708F      ANDI	R24,0xF
    0409 838D      STD	Y+5,R24
(0407) 	 time[3]=Set_Time[6]&0x0f;               //年低位;
    040A 8D89      LDD	R24,Y+25
    040B 708F      ANDI	R24,0xF
    040C 838E      STD	Y+6,R24
(0408) 	 time[4]=Set_Time[5]>>4;                 //月高位;
    040D 8D88      LDD	R24,Y+24
    040E 9582      SWAP	R24
    040F 708F      ANDI	R24,0xF
    0410 838F      STD	Y+7,R24
(0409)      time[5]=Set_Time[5]&0x0f;               //月低位;
    0411 8D88      LDD	R24,Y+24
    0412 708F      ANDI	R24,0xF
    0413 8788      STD	Y+8,R24
(0410) 	 time[6]=Set_Time[4]>>4;                 //日高位;
    0414 898F      LDD	R24,Y+23
    0415 9582      SWAP	R24
    0416 708F      ANDI	R24,0xF
    0417 8789      STD	Y+9,R24
(0411) 	 time[7]=Set_Time[4]&0x0f;               //日低位;
    0418 898F      LDD	R24,Y+23
    0419 708F      ANDI	R24,0xF
    041A 878A      STD	Y+10,R24
(0412) 	 time[8]=Set_Time[3];                    //星期;
    041B 882E      LDD	R2,Y+22
    041C 862B      STD	Y+11,R2
(0413) 	 time[9]=Set_Time[2]>>4;                 //时高位;
    041D 898D      LDD	R24,Y+21
    041E 9582      SWAP	R24
    041F 708F      ANDI	R24,0xF
    0420 878C      STD	Y+12,R24
(0414) 	 time[10]=Set_Time[2]&0x0f;              //时低位;
    0421 898D      LDD	R24,Y+21
    0422 708F      ANDI	R24,0xF
    0423 878D      STD	Y+13,R24
(0415) 	 time[11]=Set_Time[1]>>4;                //分高位;
    0424 898C      LDD	R24,Y+20
    0425 9582      SWAP	R24
    0426 708F      ANDI	R24,0xF
    0427 878E      STD	Y+14,R24
(0416)      time[12]=Set_Time[1]&0x0f;              //分低位;
    0428 898C      LDD	R24,Y+20
    0429 708F      ANDI	R24,0xF
    042A 878F      STD	Y+15,R24
(0417) 	 time[13]=Set_Time[0]>>4;                //秒高位;
    042B 898B      LDD	R24,Y+19
    042C 9582      SWAP	R24
    042D 708F      ANDI	R24,0xF
    042E 8B88      STD	Y+16,R24
(0418) 	 time[14]=Set_Time[0]&0x0f;              //秒低位;
    042F 898B      LDD	R24,Y+19
    0430 708F      ANDI	R24,0xF
    0431 8B89      STD	Y+17,R24
(0419) 	 Read_Nbyte(SD2303,0x0f,&SD,1);          //读取中断标志位
    0432 E081      LDI	R24,1
    0433 838A      STD	Y+2,R24
    0434 2F8C      MOV	R24,R28
    0435 2F9D      MOV	R25,R29
    0436 964A      ADIW	R24,0x1A
    0437 8399      STD	Y+1,R25
    0438 8388      STD	Y+0,R24
    0439 E02F      LDI	R18,0xF
    043A E604      LDI	R16,0x64
    043B DD0D      RCALL	_Read_Nbyte
(0420) 	 if(SD&0x02)  PORTD=PORTD|0x80;          //响铃1分钟
    043C 8C2A      LDD	R2,Y+26
    043D FE21      SBRS	R2,1
    043E C002      RJMP	0x0441
    043F 9A97      SBI	0x12,7
    0440 C003      RJMP	0x0444
(0421) 	 else            PORTD=PORTD&0x7F;       //关闭闹铃 
    0441 B382      IN	R24,0x12
    0442 778F      ANDI	R24,0x7F
    0443 BB82      OUT	0x12,R24
(0422)      DS=DSRead_Byte(0x02);                   //读取温度值
    0444 E002      LDI	R16,2
    0445 DF66      RCALL	_DSRead_Byte
    0446 2F40      MOV	R20,R16
(0423)      Convert(DS,time);
    0447 2F2C      MOV	R18,R28
    0448 2F3D      MOV	R19,R29
    0449 5F2D      SUBI	R18,0xFD
    044A 4F3F      SBCI	R19,0xFF
    044B DF29      RCALL	_Convert
(0424)      Display(time);                          //时间显示
    044C 2F0C      MOV	R16,R28
    044D 2F1D      MOV	R17,R29
    044E 5F0D      SUBI	R16,0xFD
    044F 4F1F      SBCI	R17,0xFF
    0450 DBFC      RCALL	_Display
    0451 CFA9      RJMP	0x03FB
(0425)    }
(0426) }
FILE: <library>
    0452 966B      ADIW	R28,0x1B
    0453 9508      RET
push_arg4:
    0454 933A      ST	R19,-Y
    0455 932A      ST	R18,-Y
push_arg2:
    0456 931A      ST	R17,-Y
    0457 930A      ST	R16,-Y
    0458 9508      RET
mod8u:
    0459 9468      BSET	6
    045A C001      RJMP	xdiv8u
div8u:
    045B 94E8      BCLR	6
xdiv8u:
    045C 932A      ST	R18,-Y
    045D 92FA      ST	R15,-Y
    045E 92EA      ST	R14,-Y
    045F 24FF      CLR	R15
    0460 24EE      CLR	R14
    0461 E120      LDI	R18,0x10
    0462 0F00      LSL	R16
    0463 1CFF      ROL	R15
    0464 1CEE      ROL	R14
    0465 16E1      CP	R14,R17
    0466 F010      BCS	0x0469
    0467 1AE1      SUB	R14,R17
    0468 9503      INC	R16
    0469 952A      DEC	R18
    046A F7B9      BNE	0x0462
    046B F40E      BRTC	0x046D
    046C 2D0E      MOV	R16,R14
    046D 90E9      LD	R14,Y+
    046E 90F9      LD	R15,Y+
    046F 9129      LD	R18,Y+
    0470 9508      RET
pop_gset2:
    0471 E0E2      LDI	R30,2
    0472 C00A      RJMP	pop
pop_gset3:
    0473 E0E4      LDI	R30,4
    0474 C008      RJMP	pop
pop_gset4:
    0475 E0E8      LDI	R30,0x8
    0476 C006      RJMP	pop
pop_gset5:
    0477 27EE      CLR	R30
    0478 C004      RJMP	pop
push_gset1:
    0479 935A      ST	R21,-Y
    047A 934A      ST	R20,-Y
    047B 9508      RET
pop_gset1:
    047C E0E1      LDI	R30,1
pop:
    047D 9149      LD	R20,Y+
    047E 9159      LD	R21,Y+
    047F FDE0      SBRC	R30,0
    0480 9508      RET
    0481 9169      LD	R22,Y+
    0482 9179      LD	R23,Y+
    0483 FDE1      SBRC	R30,1
    0484 9508      RET
    0485 90A9      LD	R10,Y+
    0486 90B9      LD	R11,Y+
    0487 FDE2      SBRC	R30,2
    0488 9508      RET
    0489 90C9      LD	R12,Y+
    048A 90D9      LD	R13,Y+
    048B FDE3      SBRC	R30,3
    048C 9508      RET
    048D 90E9      LD	R14,Y+
    048E 90F9      LD	R15,Y+
    048F 9508      RET
push_gset2:
    0490 937A      ST	R23,-Y
    0491 936A      ST	R22,-Y
    0492 CFE6      RJMP	push_gset1
push_gset3:
    0493 92BA      ST	R11,-Y
    0494 92AA      ST	R10,-Y
    0495 CFFA      RJMP	push_gset2
push_gset4:
    0496 92DA      ST	R13,-Y
    0497 92CA      ST	R12,-Y
    0498 CFFA      RJMP	push_gset3
push_gset5:
    0499 92FA      ST	R15,-Y
    049A 92EA      ST	R14,-Y
    049B CFFA      RJMP	push_gset4
mpy8s:
    049C 920A      ST	R0,-Y
    049D 2400      CLR	R0
    049E 2300      TST	R16
    049F F029      BEQ	0x04A5
    04A0 9506      LSR	R16
    04A1 F408      BCC	0x04A3
    04A2 0E01      ADD	R0,R17
    04A3 0F11      LSL	R17
    04A4 CFF9      RJMP	0x049E
    04A5 2D00      MOV	R16,R0
    04A6 9009      LD	R0,Y+
    04A7 9508      RET
asgncblk:
    04A8 93AA      ST	R26,-Y
    04A9 93BA      ST	R27,-Y
    04AA 93EA      ST	R30,-Y
    04AB 93FA      ST	R31,-Y
    04AC 920A      ST	R0,-Y
    04AD 81AF      LDD	R26,Y+7
    04AE 85B8      LDD	R27,Y+8
    04AF 81ED      LDD	R30,Y+5
    04B0 81FE      LDD	R31,Y+6
    04B1 3000      CPI	R16,0
    04B2 0701      CPC	R16,R17
    04B3 F031      BEQ	0x04BA
    04B4 95C8      LPM
    04B5 920D      ST	R0,X+
    04B6 9631      ADIW	R30,1
    04B7 5001      SUBI	R16,1
    04B8 4010      SBCI	R17,0
    04B9 CFF7      RJMP	0x04B1
    04BA 9009      LD	R0,Y+
    04BB 91F9      LD	R31,Y+
    04BC 91E9      LD	R30,Y+
    04BD 91B9      LD	R27,Y+
    04BE 91A9      LD	R26,Y+
    04BF 9624      ADIW	R28,4
    04C0 9508      RET

⌨️ 快捷键说明

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