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

📄 12864串口显示.lst

📁 数显温度万年历
💻 LST
📖 第 1 页 / 共 3 页
字号:
    02B0 923A      ST	R3,-Y
    02B1 922A      ST	R2,-Y
    02B2 E20A      LDI	R16,0x2A
    02B3 E010      LDI	R17,0
    02B4 D588      RCALL	lpm32
    02B5 933A      ST	R19,-Y
    02B6 932A      ST	R18,-Y
    02B7 931A      ST	R17,-Y
    02B8 930A      ST	R16,-Y
    02B9 D6B9      RCALL	cmp32f
    02BA F0B4      BLT	0x02D1
    02BB 01FE      MOVW	R30,R28
    02BC 8024      LDD	R2,Z+4
    02BD 8035      LDD	R3,Z+5
    02BE 8046      LDD	R4,Z+6
    02BF 8057      LDD	R5,Z+7
    02C0 925A      ST	R5,-Y
    02C1 924A      ST	R4,-Y
    02C2 923A      ST	R3,-Y
    02C3 922A      ST	R2,-Y
    02C4 E20A      LDI	R16,0x2A
    02C5 E010      LDI	R17,0
    02C6 D576      RCALL	lpm32
    02C7 933A      ST	R19,-Y
    02C8 932A      ST	R18,-Y
    02C9 931A      ST	R17,-Y
    02CA 930A      ST	R16,-Y
    02CB D65A      RCALL	sub32f
    02CC D5BF      RCALL	fp2int
    02CD 01B8      MOVW	R22,R16
    02CE 5060      SUBI	R22,0
    02CF 4870      SBCI	R23,0x80
    02D0 C007      RJMP	0x02D8
    02D1 01FE      MOVW	R30,R28
    02D2 8104      LDD	R16,Z+4
    02D3 8115      LDD	R17,Z+5
    02D4 8126      LDD	R18,Z+6
    02D5 8137      LDD	R19,Z+7
    02D6 D5B5      RCALL	fp2int
    02D7 01B8      MOVW	R22,R16
    02D8 01AB      MOVW	R20,R22
(0117) 	dis_buf_18b20[2]=(count%10000)/1000+0x30;	
    02D9 E120      LDI	R18,0x10
    02DA E237      LDI	R19,0x27
    02DB 018A      MOVW	R16,R20
    02DC D4E8      RCALL	mod16u
    02DD EE28      LDI	R18,0xE8
    02DE E033      LDI	R19,3
    02DF D4E7      RCALL	div16u
    02E0 01C8      MOVW	R24,R16
    02E1 96C0      ADIW	R24,0x30
    02E2 93800066  STS	0x66,R24
(0118) 	dis_buf_18b20[1]=(count%1000)/100+0x30;	
    02E4 EE28      LDI	R18,0xE8
    02E5 E033      LDI	R19,3
    02E6 018A      MOVW	R16,R20
    02E7 D4DD      RCALL	mod16u
    02E8 E624      LDI	R18,0x64
    02E9 E030      LDI	R19,0
    02EA D4DC      RCALL	div16u
    02EB 01C8      MOVW	R24,R16
    02EC 96C0      ADIW	R24,0x30
    02ED 93800065  STS	0x65,R24
(0119) 	dis_buf_18b20[0]=(count%100)/10+0x30;		
    02EF E624      LDI	R18,0x64
    02F0 E030      LDI	R19,0
    02F1 018A      MOVW	R16,R20
    02F2 D4D2      RCALL	mod16u
    02F3 E02A      LDI	R18,0xA
    02F4 E030      LDI	R19,0
    02F5 D4D1      RCALL	div16u
    02F6 01C8      MOVW	R24,R16
    02F7 96C0      ADIW	R24,0x30
    02F8 93800064  STS	0x64,R24
    02FA 9628      ADIW	R28,0x8
    02FB D511      RCALL	pop_gset4
    02FC 9508      RET
_read_byte:
  i                    --> R20
  dat                  --> R22
    02FD D52A      RCALL	push_gset2
FILE: C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\DS1302_drive.h
(0001) #include<iom8v.h>
(0002) #include<macros.h>
(0003) /***复位脚*****/
(0004) #define RST_CLR PORTB&=~(1<<PB2)                                       //电平置地
(0005) #define RST_SET PORTB|=(1<<PB2)                                        //电平置高
(0006) #define RST_IN DDRB&=~(1<<PB2)                                         //方向输入
(0007) #define RST_OUT DDRB|=(1<<PB2)                                         //方向输出
(0008) /*****双向数据******/
(0009) #define IO_CLR PORTB&=~(1<<PB1)                                        //电平置低
(0010) #define IO_SET PORTB|=(1<<PB1)                                         //电平置高
(0011) #define IO_R PINB&(1<<PB1)                                             //电平读取
(0012) #define IO_IN DDRB&=~(1<<PB1)                                          //方向输入
(0013) #define IO_OUT DDRB|=(1<<PB1)                                          //方向输出
(0014) /*********时钟信号********/
(0015) #define SCK_CLR PORTB&=~(1<<PB0)                                       // 时钟信号
(0016) #define SCK_SET PORTB|=(1<<PB0)                                        // 电平置高
(0017) #define SCK_IN DDRB&=~(1<<PB0)                                         //方向输入
(0018) #define SCK_OUT DDRB|=(1<<PB0)                                          //方向输出
(0019) /******************函数声明********************/
(0020) uchar read_byte(void);                                                 //读一个字节数据
(0021) void write_byte(uchar dat);                                            //写一字节数据
(0022) void write_ds1302(uchar addr,uchar data);                              //在指定地址写一字节数据
(0023) void set_ds1302(uchar addr,uchar *p,uchar n);                          //设置初始化
(0024) void init_ds1302(void);                                                //初始化函数
(0025) /***************从DS1302中读一个字节数据********************/
(0026) uchar read_byte(void)
(0027) {
(0028)     uchar i,dat=0;
    02FE 2766      CLR	R22
(0029) 	IO_IN;
    02FF 98B9      CBI	0x17,1
(0030) 	IO_CLR;
    0300 98C1      CBI	0x18,1
(0031) 	for(i=0;i<7;i++)
    0301 2744      CLR	R20
    0302 C010      RJMP	0x0313
(0032) 	{
(0033) 	    SCK_SET;
    0303 9AC0      SBI	0x18,0
(0034) 		delay_us(10);
    0304 E00A      LDI	R16,0xA
    0305 E010      LDI	R17,0
    0306 DE04      RCALL	_delay_us
(0035) 		SCK_CLR;
    0307 98C0      CBI	0x18,0
(0036) 		delay_us(10);
    0308 E00A      LDI	R16,0xA
    0309 E010      LDI	R17,0
    030A DE00      RCALL	_delay_us
(0037) 		if(IO_R)
    030B 9BB1      SBIS	0x16,1
    030C C002      RJMP	0x030F
(0038) 		    dat|=0X80;
    030D 6860      ORI	R22,0x80
    030E C001      RJMP	0x0310
(0039) 		else
(0040) 		    dat&=0X7F;
    030F 776F      ANDI	R22,0x7F
(0041) 		SCK_SET;
    0310 9AC0      SBI	0x18,0
(0042) 		dat=dat>>1;	
    0311 9566      LSR	R22
    0312 9543      INC	R20
    0313 3047      CPI	R20,7
    0314 F370      BCS	0x0303
(0043) 	}
(0044) 	IO_OUT;
    0315 9AB9      SBI	0x17,1
(0045) 	return dat;
    0316 2F06      MOV	R16,R22
    0317 D4F1      RCALL	pop_gset2
    0318 9508      RET
_write_byte:
  i                    --> R20
  dat                  --> R22
    0319 D50E      RCALL	push_gset2
    031A 2F60      MOV	R22,R16
(0046) }
(0047) /***************从DS1302中写一个字节数据********************/
(0048) void write_byte(uchar dat)
(0049) {
(0050)     uchar i;
(0051) 	for(i=0;i<8;i++)
    031B 2744      CLR	R20
    031C C00C      RJMP	0x0329
(0052) 	{
(0053) 	    SCK_CLR;
    031D 98C0      CBI	0x18,0
(0054) 		if(dat&0X01)
    031E FF60      SBRS	R22,0
    031F C002      RJMP	0x0322
(0055) 		    IO_SET;
    0320 9AC1      SBI	0x18,1
    0321 C001      RJMP	0x0323
(0056) 		else 
(0057) 		    IO_CLR;
    0322 98C1      CBI	0x18,1
(0058) 		delay_us(10);
    0323 E00A      LDI	R16,0xA
    0324 E010      LDI	R17,0
    0325 DDE5      RCALL	_delay_us
(0059) 		SCK_SET;
    0326 9AC0      SBI	0x18,0
(0060) 		dat>>=1;			
    0327 9566      LSR	R22
    0328 9543      INC	R20
    0329 3048      CPI	R20,0x8
    032A F390      BCS	0x031D
    032B D4DD      RCALL	pop_gset2
    032C 9508      RET
_read_ds1302:
  data                 --> R20
  addr                 --> R20
    032D D4E3      RCALL	push_gset1
    032E 2F40      MOV	R20,R16
(0061) 	}
(0062) }
(0063) /*********************在指定的地址读一字节数据************************/
(0064) uchar read_ds1302(uchar addr)
(0065) {
(0066)     char data;
(0067)     RST_CLR;
    032F 98C2      CBI	0x18,2
(0068) 	SCK_CLR;
    0330 98C0      CBI	0x18,0
(0069) 	delay_us(10);
    0331 E00A      LDI	R16,0xA
    0332 E010      LDI	R17,0
    0333 DDD7      RCALL	_delay_us
(0070) 	RST_SET;
    0334 9AC2      SBI	0x18,2
(0071) 	delay_us(10);
    0335 E00A      LDI	R16,0xA
    0336 E010      LDI	R17,0
    0337 DDD3      RCALL	_delay_us
(0072) 	write_byte(addr);
    0338 2F04      MOV	R16,R20
    0339 DFDF      RCALL	_write_byte
(0073) 	delay_us(10);
    033A E00A      LDI	R16,0xA
    033B E010      LDI	R17,0
    033C DDCE      RCALL	_delay_us
(0074) 	data=read_byte();
    033D DFBF      RCALL	_read_byte
    033E 2F40      MOV	R20,R16
(0075) 	delay_us(10);
    033F E00A      LDI	R16,0xA
    0340 E010      LDI	R17,0
    0341 DDC9      RCALL	_delay_us
(0076) 	SCK_CLR;
    0342 98C0      CBI	0x18,0
(0077) 	RST_CLR;
    0343 98C2      CBI	0x18,2
(0078) 	//DDRD|=(1<<PD3);
(0079) 	//delay_us(100);
(0080) 	//DDRD&=~(1<<PD3);
(0081) 	return data;
    0344 2F04      MOV	R16,R20
    0345 D4CE      RCALL	pop_gset1
    0346 9508      RET
_write_ds1302:
  data                 --> R20
  addr                 --> R22
    0347 D4E0      RCALL	push_gset2
    0348 2F42      MOV	R20,R18
    0349 2F60      MOV	R22,R16
(0082) }
(0083) void write_ds1302(uchar addr,uchar data)
(0084) {
(0085)     RST_CLR;
    034A 98C2      CBI	0x18,2
(0086) 	SCK_CLR;
    034B 98C0      CBI	0x18,0
(0087) 	delay_us(10);
    034C E00A      LDI	R16,0xA
    034D E010      LDI	R17,0
    034E DDBC      RCALL	_delay_us
(0088) 	RST_SET;
    034F 9AC2      SBI	0x18,2
(0089) 	delay_us(10);
    0350 E00A      LDI	R16,0xA
    0351 E010      LDI	R17,0
    0352 DDB8      RCALL	_delay_us
(0090) 	write_byte(addr);
    0353 2F06      MOV	R16,R22
    0354 DFC4      RCALL	_write_byte
(0091) 	delay_us(10);
    0355 E00A      LDI	R16,0xA
    0356 E010      LDI	R17,0
    0357 DDB3      RCALL	_delay_us
(0092) 	SCK_CLR;
    0358 98C0      CBI	0x18,0
(0093) 	delay_us(10);
    0359 E00A      LDI	R16,0xA
    035A E010      LDI	R17,0
    035B DDAF      RCALL	_delay_us
(0094) 	write_byte(data);
    035C 2F04      MOV	R16,R20
    035D DFBB      RCALL	_write_byte
(0095) 	SCK_CLR;
    035E 98C0      CBI	0x18,0
(0096) 	delay_us(10);
    035F E00A      LDI	R16,0xA
    0360 E010      LDI	R17,0
    0361 DDA9      RCALL	_delay_us
(0097) 	RST_CLR;
    0362 98C2      CBI	0x18,2
    0363 D4A5      RCALL	pop_gset2
    0364 9508      RET
_set_ds1302:
  n                    --> R20
  p                    --> R22
  addr                 --> R10
    0365 D4C5      RCALL	push_gset3
    0366 01B9      MOVW	R22,R18
    0367 2EA0      MOV	R10,R16
    0368 814E      LDD	R20,Y+6
(0098) }
(0099) /************************设置初始化函数*******************************/
(0100) void set_ds1302(uchar addr,uchar *p,uchar n)
(0101) {
(0102)     write_ds1302(0X8E,0X00);
    0369 2722      CLR	R18
    036A E80E      LDI	R16,0x8E
    036B DFDB      RCALL	_write_ds1302
(0103) 	for(;n>0;n--)
    036C C00A      RJMP	0x0377
(0104) 	{
(0105) 	    write_ds1302(addr,*p);
    036D 01FB      MOVW	R30,R22
    036E 8120      LDD	R18,Z+0
    036F 2D0A      MOV	R16,R10
    0370 DFD6      RCALL	_write_ds1302
(0106) 		p++;
    0371 5F6F      SUBI	R22,0xFF
    0372 4F7F      SBCI	R23,0xFF
(0107) 		addr=addr+2;
    0373 2D8A      MOV	R24,R10
    0374 5F8E      SUBI	R24,0xFE
    0375 2EA8      MOV	R10,R24
    0376 954A      DEC	R20
    0377 2422      CLR	R2
    0378 1624      CP	R2,R20
    0379 F398      BCS	0x036D
(0108) 	}
(0109) 	write_ds1302(0X8E,0X80);
    037A E820      LDI	R18,0x80
    037B E80E      LDI	R16,0x8E
    037C DFCA      RCALL	_write_ds1302
    037D D48D      RCALL	pop_gset3
    037E 9508      RET
(0110) }
(0111) /**********************初始化DS1302函数*******************************/
(0112) void init_ds1302(void)
(0113) {
(0114)     RST_CLR;
_init_ds1302:
    037F 98C2      CBI	0x18,2
(0115) 	SCK_CLR;
    0380 98C0      CBI	0x18,0
(0116) 	RST_OUT;
    0381 9ABA      SBI	0x17,2
(0117) 	SCK_OUT;
    0382 9AB8      SBI	0x17,0
(0118) 	write_ds1302(0X80,0X00);
    0383 2722      CLR	R18
    0384 E800      LDI	R16,0x80
    0385 DFC1      RCALL	_write_ds1302
(0119) 	write_ds1302(0X90,0XAB);
    0386 EA2B      LDI	R18,0xAB
    0387 E900      LDI	R16,0x90
    0388 DFBE      RCALL	_write_ds1302
(0120) 	write_ds1302(0X8E,0X80);
    0389 E820      LDI	R18,0x80
    038A E80E      LDI	R16,0x8E
    038B DFBB      RCALL	_write_ds1302
    038C 9508      RET
FILE: C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
(0001) /**********************************************************************
(0002) 创建人:李小磊(QQ:1397301068)

⌨️ 快捷键说明

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