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

📄 test.lst

📁 mega128+时实时钟日期芯片ds1307的例子
💻 LST
📖 第 1 页 / 共 3 页
字号:
__text_start:
__start:
    0073 EFCF      LDI	R28,0xFF
    0074 E1D0      LDI	R29,0x10
    0075 BFCD      OUT	0x3D,R28
    0076 BFDE      OUT	0x3E,R29
    0077 51C0      SUBI	R28,0x10
    0078 40D0      SBCI	R29,0
    0079 EA0A      LDI	R16,0xAA
    007A 8308      STD	Y+0,R16
    007B 2400      CLR	R0
    007C E5E9      LDI	R30,0x59
    007D E0F1      LDI	R31,1
    007E E011      LDI	R17,1
    007F 36E7      CPI	R30,0x67
    0080 07F1      CPC	R31,R17
    0081 F011      BEQ	0x0084
    0082 9201      ST	R0,Z+
    0083 CFFB      RJMP	0x007F
    0084 8300      STD	Z+0,R16
    0085 E8EC      LDI	R30,0x8C
    0086 E0F0      LDI	R31,0
    0087 E0A0      LDI	R26,0
    0088 E0B1      LDI	R27,1
    0089 E010      LDI	R17,0
    008A 3EE5      CPI	R30,0xE5
    008B 07F1      CPC	R31,R17
    008C F021      BEQ	0x0091
    008D 95C8      LPM
    008E 9631      ADIW	R30,1
    008F 920D      ST	R0,X+
    0090 CFF9      RJMP	0x008A
    0091 940E0094  CALL	_main
_exit:
    0093 CFFF      RJMP	_exit
_main:
  str2                 --> Y+22
  str1                 --> Y+2
    0094 9769      SBIW	R28,0x19
FILE: F:\cdy笔记本资料\E\工程\五星\设计文档\程序设计\ds1307\main.c
(0001) /*--------------------------------------------------*/
(0002) /*             AVR-ARM开发网论坛                    */
(0003) /*           http://www.avrarm.com                  */
(0004) /*            AVR生成代码测试程序                   */
(0005) /*--------------------------------------------------*/
(0006) /*     程序由AVR辅助开发工具V2.0.0自动生成          */
(0007) /*     AVR系统的处理器为:   ATMega16               */
(0008) /*     AVR系统的晶振频率:   8.0000 Mhz             */
(0009) /*--------------------------------------------------*/
(0010) 
(0011) #include <iom128v.h>
(0012) #include <macros.h>
(0013) #include "twi.h"
(0014) #include "ds1307.h"
(0015) #include "stdlib.h"
(0016) #include "string.h"
(0017) #include "ocmj_lcd.h"
(0018) #include "delay.h"
(0019) 
(0020) 
(0021) 
(0022) //-----------------------------------------------------------
(0023) //主函数
(0024) //-----------------------------------------------------------
(0025) void main(void)
(0026) {
(0027)    char str1[20],str2[3];
(0028) 
(0029)    CLI();
    0095 94F8      BCLR	7
(0030)     TWI_Init();
    0096 940E017B  CALL	_TWI_Init
(0031)     ocmj_init();
    0098 940E0332  CALL	_ocmj_init
(0032)    //rtc_write(0x00,0x00,0x01);
(0033)  
(0034)    SEI();
    009A 9478      BSET	7
(0035)    ocmj_write(0xf4);                     //显示清屏
    009B EF04      LDI	R16,0xF4
    009C 940E0347  CALL	_ocmj_write
(0036)    delay_nms(1); 
    009E E001      LDI	R16,1
    009F E010      LDI	R17,0
    00A0 940E0323  CALL	_delay_nms
(0037)    asc_tran(3,0,"Welcome to");
    00A2 E289      LDI	R24,0x29
    00A3 E091      LDI	R25,1
    00A4 8399      STD	Y+1,R25
    00A5 8388      STD	Y+0,R24
    00A6 2722      CLR	R18
    00A7 E003      LDI	R16,3
    00A8 940E0353  CALL	_asc_tran
(0038)    asc_tran(1,8,"www.avrarm.com!");
    00AA E189      LDI	R24,0x19
    00AB E091      LDI	R25,1
    00AC 8399      STD	Y+1,R25
    00AD 8388      STD	Y+0,R24
    00AE E028      LDI	R18,0x8
    00AF E001      LDI	R16,1
    00B0 940E0353  CALL	_asc_tran
(0039)    delay_nms(800);
    00B2 E200      LDI	R16,0x20
    00B3 E013      LDI	R17,3
    00B4 940E0323  CALL	_delay_nms
(0040)    ocmj_write(0xf4);                    //显示清屏
    00B6 EF04      LDI	R16,0xF4
    00B7 940E0347  CALL	_ocmj_write
    00B9 C0BE      RJMP	0x0178
(0041) 
(0042)    while(1)
(0043)    {
(0044)       RtcUpdateData(RTC_READ);
    00BA E001      LDI	R16,1
    00BB 940E023D  CALL	_RtcUpdateData
(0045)       RtcBCDToBin();
    00BD 940E02D9  CALL	_RtcBCDToBin
(0046)       strcpy(str1,"0");
    00BF E127      LDI	R18,0x17
    00C0 E031      LDI	R19,1
    00C1 018E      MOVW	R16,R28
    00C2 5F0E      SUBI	R16,0xFE
    00C3 4F1F      SBCI	R17,0xFF
    00C4 940E0384  CALL	_strcpy
(0047)       
(0048)       itoa(str2,g_aTimeBin[6],10);   //year
    00C6 E08A      LDI	R24,0xA
    00C7 E090      LDI	R25,0
    00C8 8399      STD	Y+1,R25
    00C9 8388      STD	Y+0,R24
    00CA 9120015F  LDS	R18,0x15F
    00CC 2733      CLR	R19
    00CD 018E      MOVW	R16,R28
    00CE 5E0A      SUBI	R16,0xEA
    00CF 4F1F      SBCI	R17,0xFF
    00D0 940E0407  CALL	_itoa
(0049)       strcat(str1,str2);
    00D2 019E      MOVW	R18,R28
    00D3 5E2A      SUBI	R18,0xEA
    00D4 4F3F      SBCI	R19,0xFF
    00D5 018E      MOVW	R16,R28
    00D6 5F0E      SUBI	R16,0xFE
    00D7 4F1F      SBCI	R17,0xFF
    00D8 940E0377  CALL	_strcat
(0050)       strcat(str1,"-");
    00DA E125      LDI	R18,0x15
    00DB E031      LDI	R19,1
    00DC 018E      MOVW	R16,R28
    00DD 5F0E      SUBI	R16,0xFE
    00DE 4F1F      SBCI	R17,0xFF
    00DF 940E0377  CALL	_strcat
(0051)       itoa(str2,g_aTimeBin[5],10);   //month
    00E1 E08A      LDI	R24,0xA
    00E2 E090      LDI	R25,0
    00E3 8399      STD	Y+1,R25
    00E4 8388      STD	Y+0,R24
    00E5 9120015E  LDS	R18,0x15E
    00E7 2733      CLR	R19
    00E8 018E      MOVW	R16,R28
    00E9 5E0A      SUBI	R16,0xEA
    00EA 4F1F      SBCI	R17,0xFF
    00EB 940E0407  CALL	_itoa
(0052)       strcat(str1,str2);
    00ED 019E      MOVW	R18,R28
    00EE 5E2A      SUBI	R18,0xEA
    00EF 4F3F      SBCI	R19,0xFF
    00F0 018E      MOVW	R16,R28
    00F1 5F0E      SUBI	R16,0xFE
    00F2 4F1F      SBCI	R17,0xFF
    00F3 940E0377  CALL	_strcat
(0053)       strcat(str1,"-");
    00F5 E125      LDI	R18,0x15
    00F6 E031      LDI	R19,1
    00F7 018E      MOVW	R16,R28
    00F8 5F0E      SUBI	R16,0xFE
    00F9 4F1F      SBCI	R17,0xFF
    00FA 940E0377  CALL	_strcat
(0054)       itoa(str2,g_aTimeBin[4],10);   //day
    00FC E08A      LDI	R24,0xA
    00FD E090      LDI	R25,0
    00FE 8399      STD	Y+1,R25
    00FF 8388      STD	Y+0,R24
    0100 9120015D  LDS	R18,0x15D
    0102 2733      CLR	R19
    0103 018E      MOVW	R16,R28
    0104 5E0A      SUBI	R16,0xEA
    0105 4F1F      SBCI	R17,0xFF
    0106 940E0407  CALL	_itoa
(0055)       strcat(str1,str2);
    0108 019E      MOVW	R18,R28
    0109 5E2A      SUBI	R18,0xEA
    010A 4F3F      SBCI	R19,0xFF
    010B 018E      MOVW	R16,R28
    010C 5F0E      SUBI	R16,0xFE
    010D 4F1F      SBCI	R17,0xFF
    010E 940E0377  CALL	_strcat
(0056)       
(0057)       strcat(str1," ");
    0110 E123      LDI	R18,0x13
    0111 E031      LDI	R19,1
    0112 018E      MOVW	R16,R28
    0113 5F0E      SUBI	R16,0xFE
    0114 4F1F      SBCI	R17,0xFF
    0115 940E0377  CALL	_strcat
(0058)       itoa(str2,g_aTimeBin[2],10);
    0117 E08A      LDI	R24,0xA
    0118 E090      LDI	R25,0
    0119 8399      STD	Y+1,R25
    011A 8388      STD	Y+0,R24
    011B 9120015B  LDS	R18,g_aTimeBin+2
    011D 2733      CLR	R19
    011E 018E      MOVW	R16,R28
    011F 5E0A      SUBI	R16,0xEA
    0120 4F1F      SBCI	R17,0xFF
    0121 940E0407  CALL	_itoa
(0059)       strcat(str1,str2);
    0123 019E      MOVW	R18,R28
    0124 5E2A      SUBI	R18,0xEA
    0125 4F3F      SBCI	R19,0xFF
    0126 018E      MOVW	R16,R28
    0127 5F0E      SUBI	R16,0xFE
    0128 4F1F      SBCI	R17,0xFF
    0129 940E0377  CALL	_strcat
(0060)       strcat(str1,":");
    012B E121      LDI	R18,0x11
    012C E031      LDI	R19,1
    012D 018E      MOVW	R16,R28
    012E 5F0E      SUBI	R16,0xFE
    012F 4F1F      SBCI	R17,0xFF
    0130 940E0377  CALL	_strcat
(0061)       itoa(str2,g_aTimeBin[1],10);
    0132 E08A      LDI	R24,0xA
    0133 E090      LDI	R25,0
    0134 8399      STD	Y+1,R25
    0135 8388      STD	Y+0,R24
    0136 9120015A  LDS	R18,g_aTimeBin+1
    0138 2733      CLR	R19
    0139 018E      MOVW	R16,R28
    013A 5E0A      SUBI	R16,0xEA
    013B 4F1F      SBCI	R17,0xFF
    013C 940E0407  CALL	_itoa
(0062)       strcat(str1,str2);
    013E 019E      MOVW	R18,R28
    013F 5E2A      SUBI	R18,0xEA
    0140 4F3F      SBCI	R19,0xFF
    0141 018E      MOVW	R16,R28
    0142 5F0E      SUBI	R16,0xFE
    0143 4F1F      SBCI	R17,0xFF
    0144 940E0377  CALL	_strcat
(0063)       strcat(str1,":");
    0146 E121      LDI	R18,0x11
    0147 E031      LDI	R19,1
    0148 018E      MOVW	R16,R28
    0149 5F0E      SUBI	R16,0xFE
    014A 4F1F      SBCI	R17,0xFF
    014B 940E0377  CALL	_strcat
(0064)       itoa(str2,g_aTimeBin[0],10);
    014D E08A      LDI	R24,0xA
    014E E090      LDI	R25,0
    014F 8399      STD	Y+1,R25
    0150 8388      STD	Y+0,R24
    0151 91200159  LDS	R18,g_aTimeBin
    0153 2733      CLR	R19
    0154 018E      MOVW	R16,R28
    0155 5E0A      SUBI	R16,0xEA
    0156 4F1F      SBCI	R17,0xFF
    0157 940E0407  CALL	_itoa
(0065)       strcat(str1,str2);
    0159 019E      MOVW	R18,R28
    015A 5E2A      SUBI	R18,0xEA
    015B 4F3F      SBCI	R19,0xFF
    015C 018E      MOVW	R16,R28
    015D 5F0E      SUBI	R16,0xFE
    015E 4F1F      SBCI	R17,0xFF
    015F 940E0377  CALL	_strcat
(0066)         ocmj_write(0xf4);
    0161 EF04      LDI	R16,0xF4
    0162 940E0347  CALL	_ocmj_write
(0067)        asc_tran(0,0," Current time is");
    0164 E080      LDI	R24,0
    0165 E091      LDI	R25,1
    0166 8399      STD	Y+1,R25
    0167 8388      STD	Y+0,R24
    0168 2722      CLR	R18
    0169 2700      CLR	R16
    016A 940E0353  CALL	_asc_tran
(0068)       
(0069) 	   asc_tran(0,9,str1);
    016C 01CE      MOVW	R24,R28
    016D 9602      ADIW	R24,2
    016E 8399      STD	Y+1,R25
    016F 8388      STD	Y+0,R24
    0170 E029      LDI	R18,0x9
    0171 2700      CLR	R16
    0172 940E0353  CALL	_asc_tran
(0070)       delay_nms(200);
    0174 EC08      LDI	R16,0xC8
    0175 E010      LDI	R17,0
    0176 940E0323  CALL	_delay_nms
    0178 CF41      RJMP	0x00BA
    0179 9669      ADIW	R28,0x19
    017A 9508      RET
FILE: F:\cdy笔记本资料\E\工程\五星\设计文档\程序设计\ds1307\twi.c
(0001) //-----------------------------------------------------------
(0002) //程序由AVR辅助开发工具V2.0.0自动生成     
(0003) //MCU系统的处理器为:    ATMega16
(0004) //MCU系统的晶振频率:    8.0000 Mhz
(0005) //-----------------------------------------------------------
(0006) 
(0007) #include <iom128v.h>
(0008) #include "delay.h"
(0009) #include "twi.h"
(0010) 
(0011) //-----------------------------------------------------------
(0012) //TWI初始化子程序
(0013) //-----------------------------------------------------------
(0014) void TWI_Init(void)
(0015) {
(0016)    TWCR= 0x00;     //disable twi
_TWI_Init:
    017B 2422      CLR	R2
    017C 92200074  STS	0x74,R2
(0017)    TWBR= 0x49;     //set bit rate
    017E E489      LDI	R24,0x49
    017F 93800070  STS	0x70,R24
(0018)    TWSR= 0x03;     //set prescale
    0181 E083      LDI	R24,3
    0182 93800071  STS	0x71,R24
(0019)    TWAR= 0xFE;     //set slave address
    0184 EF8E      LDI	R24,0xFE
    0185 93800072  STS	0x72,R24
    0187 9508      RET
(0020) }
(0021) 
(0022) //总线上起动停止条件
(0023) void twi_stop(void)
(0024) {
(0025)    TWI_Stop();
_twi_stop:
    0188 E984      LDI	R24,0x94
    0189 93800074  STS	0x74,R24
    018B 9508      RET
(0026) }
(0027) 
(0028) //总线上起动开始条件
(0029) unsigned char twi_start(void)
(0030) {
(0031)    TWI_Start();
_twi_start:
    018C EA84      LDI	R24,0xA4
    018D 93800074  STS	0x74,R24
(0032)    TWI_Wait();
    018F 90200074  LDS	R2,0x74
    0191 FE27      SBRS	R2,7
    0192 CFFC      RJMP	0x018F
(0033)    return TW_STATUS;
    0193 91000071  LDS	R16,0x71
    0195 7F08      ANDI	R16,0xF8
    0196 9508      RET
_twi_writebyte:
  c                    --> R20
    0197 940E03F0  CALL	push_gset1
    0199 2F40      MOV	R20,R16
(0034) }
(0035) 
(0036) //写一字节
(0037) unsigned char twi_writebyte(unsigned char c)
(0038) {
(0039)    TWDR = c;
    019A 93400073  STS	0x73,R20
(0040)    delay_nms(10);   
    019C E00A      LDI	R16,0xA
    019D E010      LDI	R17,0
    019E 940E0323  CALL	_delay_nms
(0041)    TWCR = (1 << (TWINT)) | (1 << (TWEN));
    01A0 E884      LDI	R24,0x84
    01A1 93800074  STS	0x74,R24
(0042)    TWI_Wait();
    01A3 90200074  LDS	R2,0x74
    01A5 FE27      SBRS	R2,7
    01A6 CFFC      RJMP	0x01A3
(0043)    delay_nms(10);  
    01A7 E00A      LDI	R16,0xA
    01A8 E010      LDI	R17,0
    01A9 940E0323  CALL	_delay_nms
(0044)    return TW_STATUS;
    01AB 91000071  LDS	R16,0x71
    01AD 7F08      ANDI	R16,0xF8
    01AE 940E03F3  CALL	pop_gset1
    01B0 9508      RET
_twi_readbyte:
  tmp                  --> R22
  ack                  --> R10
  c                    --> R20
    01B1 940E03EC  CALL	push_gset3
    01B3 2EA2      MOV	R10,R18
    01B4 01A8      MOVW	R20,R16
(0045) }
(0046) 
(0047) //读一字节 ack: true时发ACK,false时发NACK
(0048) unsigned char twi_readbyte(unsigned char *c ,unsigned char ack)
(0049) {
(0050)    unsigned char tmp=(1 << (TWINT)) | (1 << (TWEN));
    01B5 E864      LDI	R22,0x84
(0051)    if(ack)
    01B6 20AA      TST	R10
    01B7 F009      BEQ	0x01B9
(0052)       tmp|=(1 << (TWEA));
    01B8 6460      ORI	R22,0x40
(0053)    TWCR=tmp;
    01B9 93600074  STS	0x74,R22
(0054)    delay_nms(10);
    01BB E00A      LDI	R16,0xA
    01BC E010      LDI	R17,0
    01BD 940E0323  CALL	_delay_nms
(0055)    TWI_Wait();
    01BF 90200074  LDS	R2,0x74
    01C1 FE27      SBRS	R2,7
    01C2 CFFC      RJMP	0x01BF
(0056)    delay_nms(10); 
    01C3 E00A      LDI	R16,0xA
    01C4 E010      LDI	R17,0
    01C5 940E0323  CALL	_delay_nms
(0057)    *c=TWDR;
    01C7 90200073  LDS	R2,0x73
    01C9 01FA      MOVW	R30,R20
    01CA 8220      STD	Z+0,R2
(0058)    return TW_STATUS;
    01CB 91000071  LDS	R16,0x71
    01CD 7F08      ANDI	R16,0xF8
    01CE 940E03E2  CALL	pop_gset3
    01D0 9508      RET
_rtc_write:
  i                    --> R20
  len                  --> R22
  buf                  --> R10
  addr                 --> R20
    01D1 940E03EC  CALL	push_gset3
    01D3 0159      MOVW	R10,R18
    01D4 2F40      MOV	R20,R16
    01D5 816E      LDD	R22,Y+6
FILE: F:\cdy笔记本资料\E\工程\五星\设计文档\程序设计\ds1307\ds1307.c

⌨️ 快捷键说明

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