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

📄 time_8515.lis

📁 AVR开发板例子源代码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0170                   .dbline 221
 0170           ;       DDRA &= ~(1<<DDA4);          //数据脚改为输入
 0170 D498              cbi 0x1a,4
 0172                   .dbline 222
 0172           ;       NOP();
 0172 0000              nop
 0174                   .dbline 223
 0174           ;       for (i=0;i<8;i++)
 0174 4427              clr R20
 0176 09C0              rjmp L45
 0178           L42:
 0178                   .dbline 224
 0178                   .dbline 225
 0178 ADDF              rcall _OutputByte
 017A 80E0              ldi R24,<_buf_read
 017C 90E0              ldi R25,>_buf_read
 017E E42F              mov R30,R20
 0180 FF27              clr R31
 0182 E80F              add R30,R24
 0184 F91F              adc R31,R25
 0186 0083              std z+0,R16
 0188                   .dbline 226
 0188           L43:
 0188                   .dbline 223
 0188 4395              inc R20
 018A           L45:
 018A                   .dbline 223
 018A 4830              cpi R20,8
 018C A8F3              brlo L42
 018E                   .dbline 227
 018E           ;       {
 018E           ;          buf_read[i]=OutputByte();
 018E           ;       }
 018E           ;       PORTA &= ~(1<<PA5);          //RST=0
 018E DD98              cbi 0x1b,5
 0190                   .dbline -2
 0190           L41:
 0190 00D0              rcall pop_gset1
 0192                   .dbline 0 ; func end
 0192 0895              ret
 0194                   .dbsym r i 20 c
 0194                   .dbend
 0194                   .dbfunc e write_pc232 _write_pc232 fV
 0194           ;              i -> R20
                        .even
 0194           _write_pc232::
 0194 00D0              rcall push_gset1
 0196 402F              mov R20,R16
 0198                   .dbline -1
 0198                   .dbline 238
 0198           ; }
 0198           ; 
 0198           ; /********************************************************
 0198           ;   子程序名:   write_pc232()
 0198           ;   功    能:   串口发送一个字节
 0198           ;   输入参数:   /
 0198           ;   输出参数:   /
 0198           ;   描    述:   把数据发送出去先发送再检测,发完后,才离开
 0198           ; ********************************************************/
 0198           ; void write_pc232(uchar i)
 0198           ; {
 0198           L47:
 0198                   .dbline 239
 0198           L48:
 0198                   .dbline 239
 0198           ;        while(!(UCSRA&(1<<UDRE)));     //1字节发送完毕?
 0198 5D9B              sbis 0xb,5
 019A FECF              rjmp L47
 019C                   .dbline 240
 019C           ;        UDR = i;                     //发送一个字符数据
 019C 4CB9              out 0xc,R20
 019E                   .dbline 241
 019E           ;        DelaymS (10);
 019E 0AE0              ldi R16,10
 01A0 10E0              ldi R17,0
 01A2 2EDF              rcall _DelaymS
 01A4                   .dbline -2
 01A4           L46:
 01A4 00D0              rcall pop_gset1
 01A6                   .dbline 0 ; func end
 01A6 0895              ret
 01A8                   .dbsym r i 20 c
 01A8                   .dbend
 01A8                   .dbfunc e mcu_Init _mcu_Init fV
                        .even
 01A8           _mcu_Init::
 01A8                   .dbline -1
 01A8                   .dbline 251
 01A8           ; }
 01A8           ; /************************************************
 01A8           ; 函 数 名:    mcu_Init()
 01A8           ; 功    能:    单片机初始化函数
 01A8           ; 输入参数:     /
 01A8           ; 输出参数:    /
 01A8           ; 描    述:    相关口方向的设置等
 01A8           ; ***********************************************/
 01A8           ; void mcu_Init(void)
 01A8           ; {
 01A8                   .dbline 252
 01A8           ;       DDRC = 0xff;     //PC口为推挽1输出,段码
 01A8 8FEF              ldi R24,255
 01AA 84BB              out 0x14,R24
 01AC                   .dbline 253
 01AC           ;       DDRD = 0xff;     //PD口为推挽1输出,位码,PD7为485DE脚。
 01AC 81BB              out 0x11,R24
 01AE                   .dbline 254
 01AE           ;       DDRA = 0xff;     //PA口接DS1302
 01AE 8ABB              out 0x1a,R24
 01B0                   .dbline -2
 01B0           L50:
 01B0                   .dbline 0 ; func end
 01B0 0895              ret
 01B2                   .dbend
 01B2                   .dbfunc e usart_Init _usart_Init fV
                        .even
 01B2           _usart_Init::
 01B2                   .dbline -1
 01B2                   .dbline 264
 01B2           ; }
 01B2           ; /********************************************************
 01B2           ;   子程序名:   usart_Init()
 01B2           ;   功    能:   串口初始化
 01B2           ;   输入参数:   /
 01B2           ;   输出参数:   /
 01B2           ;   描    述:   /
 01B2           ; ********************************************************/
 01B2           ; void usart_Init (void)
 01B2           ; {
 01B2                   .dbline 265
 01B2           ;        UBRRL=51; //波特率寄存器,UART:9600bps,8.000MHz
 01B2 83E3              ldi R24,51
 01B4 89B9              out 0x9,R24
 01B6                   .dbline 266
 01B6           ;        UCSRB = (1<<RXEN)|(1<<TXEN);    //UART控制寄存器,RXD&TXD使能
 01B6 88E1              ldi R24,24
 01B8 8AB9              out 0xa,R24
 01BA                   .dbline -2
 01BA           L51:
 01BA                   .dbline 0 ; func end
 01BA 0895              ret
 01BC                   .dbend
 01BC                   .dbfunc e spk _spk fV
 01BC           ;              i -> R20
                        .even
 01BC           _spk::
 01BC 00D0              rcall push_gset1
 01BE 402F              mov R20,R16
 01C0                   .dbline -1
 01C0                   .dbline 276
 01C0           ; }
 01C0           ; /************************************************
 01C0           ; 函 数 名:    spk()
 01C0           ; 功    能:    蜂鸣器鸣叫一声函数
 01C0           ; 输入参数:     
 01C0           ; 输出参数:    
 01C0           ; 描    述:    /
 01C0           ; ***********************************************/
 01C0           ; void spk (uchar i) 
 01C0           ; {
 01C0                   .dbline 277
 01C0           ;        DDRA |= (1<<2);    //DDRA2为输出。
 01C0 D29A              sbi 0x1a,2
 01C2                   .dbline 278
 01C2           ;        PORTA &= ~(1<<PA2);     //蜂鸣器响
 01C2 DA98              cbi 0x1b,2
 01C4                   .dbline 279
 01C4           ;        DelaymS (i);          //延迟
 01C4 042F              mov R16,R20
 01C6 1127              clr R17
 01C8 1BDF              rcall _DelaymS
 01CA                   .dbline 280
 01CA           ;        PORTA |= (1<<PA2);     //蜂鸣器关闭
 01CA DA9A              sbi 0x1b,2
 01CC                   .dbline -2
 01CC           L52:
 01CC 00D0              rcall pop_gset1
 01CE                   .dbline 0 ; func end
 01CE 0895              ret
 01D0                   .dbsym r i 20 c
 01D0                   .dbend
 01D0                   .dbfunc e data_conversion _data_conversion fV
                        .even
 01D0           _data_conversion::
 01D0                   .dbline -1
 01D0                   .dbline 291
 01D0           ; }
 01D0           ; /********************************************************
 01D0           ;   子程序名:   data_conversion()
 01D0           ;   输入参数:   数据转换程序
 01D0           ;   输出参数:   /
 01D0           ;   描    述:   /1302读出的数据是BCD码形式,必须进行数制转换。
 01D0           ;   数据格式:    秒   分   时    日   月 星期 年  写保护字节
 01D0           ;   显示格式:   秒秒 分分 时时  日日 月月    年年 辅助
 01D0           ; ********************************************************/
 01D0           ; void data_conversion (void)
 01D0           ; {
 01D0                   .dbline 292
 01D0           ;        buf_time[29] = (buf_read[0] & 0x0f) + '0';   //秒的低位
 01D0 80910000          lds R24,_buf_read
 01D4 8F70              andi R24,15
 01D6 805D              subi R24,208    ; addi 48
 01D8 80931D00          sts _buf_time+29,R24
 01DC                   .dbline 293
 01DC           ;        buf_time[28] = (buf_read[0] >> 4 ) + '0';  //秒的高位
 01DC 80910000          lds R24,_buf_read
 01E0 8295              swap R24
 01E2 8F70              andi R24,#0x0F
 01E4 805D              subi R24,208    ; addi 48
 01E6 80931C00          sts _buf_time+28,R24
 01EA                   .dbline 295
 01EA           ;        
 01EA           ;        buf_time[26] = (buf_read[1] & 0x0f) + '0';   //分的低位
 01EA 80910100          lds R24,_buf_read+1
 01EE 8F70              andi R24,15
 01F0 805D              subi R24,208    ; addi 48
 01F2 80931A00          sts _buf_time+26,R24
 01F6                   .dbline 296
 01F6           ;        buf_time[25] = (buf_read[1] >> 4 ) + '0';  //分的高位
 01F6 80910100          lds R24,_buf_read+1
 01FA 8295              swap R24
 01FC 8F70              andi R24,#0x0F
 01FE 805D              subi R24,208    ; addi 48
 0200 80931900          sts _buf_time+25,R24
 0204                   .dbline 298
 0204           ;        
 0204           ;        buf_time[23] = (buf_read[2] & 0x0f) + '0';   //时的低位
 0204 80910200          lds R24,_buf_read+2
 0208 8F70              andi R24,15
 020A 805D              subi R24,208    ; addi 48
 020C 80931700          sts _buf_time+23,R24
 0210                   .dbline 299
 0210           ;        buf_time[22] = (buf_read[2] >> 4 ) + '0';  //时的高位
 0210 80910200          lds R24,_buf_read+2
 0214 8295              swap R24
 0216 8F70              andi R24,#0x0F
 0218 805D              subi R24,208    ; addi 48
 021A 80931600          sts _buf_time+22,R24
 021E                   .dbline 301
 021E           ;        
 021E           ;        buf_time[14] = (buf_read[3] & 0x0f) + '0';   //日的低位
 021E 80910300          lds R24,_buf_read+3
 0222 8F70              andi R24,15
 0224 805D              subi R24,208    ; addi 48
 0226 80930E00          sts _buf_time+14,R24
 022A                   .dbline 302
 022A           ;        buf_time[13] = (buf_read[3] >> 4 ) + '0';  //日的高位
 022A 80910300          lds R24,_buf_read+3
 022E 8295              swap R24
 0230 8F70              andi R24,#0x0F
 0232 805D              subi R24,208    ; addi 48
 0234 80930D00          sts _buf_time+13,R24
 0238                   .dbline 304
 0238           ;        
 0238           ;        buf_time[11] = (buf_read[4] & 0x0f) + '0';   //月的高位
 0238 80910400          lds R24,_buf_read+4
 023C 8F70              andi R24,15
 023E 805D              subi R24,208    ; addi 48
 0240 80930B00          sts _buf_time+11,R24
 0244                   .dbline 305
 0244           ;        buf_time[10] = (buf_read[4] >> 4 ) + '0';  //月的高位
 0244 80910400          lds R24,_buf_read+4
 0248 8295              swap R24
 024A 8F70              andi R24,#0x0F
 024C 805D              subi R24,208    ; addi 48
 024E 80930A00          sts _buf_time+10,R24
 0252                   .dbline 307
 0252           ;        
 0252           ;        buf_time[8]  = (buf_read[6] & 0x0f) + '0';   //年的高位
 0252 80910600          lds R24,_buf_read+6
 0256 8F70              andi R24,15
 0258 805D              subi R24,208    ; addi 48
 025A 80930800          sts _buf_time+8,R24
 025E                   .dbline 308
 025E           ;        buf_time[7]  = (buf_read[6] >> 4 ) + '0';  //年的高位
 025E 80910600          lds R24,_buf_read+6
 0262 8295              swap R24
 0264 8F70              andi R24,#0x0F
 0266 805D              subi R24,208    ; addi 48
 0268 80930700          sts _buf_time+7,R24
 026C                   .dbline -2
 026C           L53:
 026C                   .dbline 0 ; func end
 026C 0895              ret
 026E                   .dbend
                        .area lit(rom, con, rel)
 0000           L77:
 0000 2020BDF1CCECB5C4C8D5C6DACAC7A3BA  .byte 32,32,189,241,204,236,181,196,200,213,198,218,202,199,163,186
 0010           L78:
 0010 2020B5B1C7B0B5C4CAB1BCE4CAC7A3BA  .byte 32,32,181,177,199,176,181,196,202,177,188,228,202,199,163,186
                        .area text(rom, con, rel)
 026E                   .dbfile E:\iccavr代码\实验19_其他芯片使用_8515\time_8515.c
 026E                   .dbfunc e out_data_pc232 _out_data_pc232 fV
 026E           ;          time2 -> y+16
 026E           ;          time1 -> y+0
 026E           ;              i -> R20
                        .even
 026E           _out_data_pc232::
 026E 00D0              rcall push_gset1
 0270 A097              sbiw R28,32
 0272                   .dbline -1
 0272                   .dbline 318
 0272           ; }
 0272           ; /********************************************************
 0272           ;   子程序名:   out_data_pc232()
 0272           ;   功    能:   串口发送时间数据到PC,
 0272           ;   输入参数:   /
 0272           ;   输出参数:   /
 0272           ;   描    述:   包括"当前的温度是:xxx.xx摄氏度",此程序借助LCD的显示缓冲区
 0272           ; ********************************************************/
 0272           ; void out_data_pc232(void) 
 0272           ; {
 0272                   .dbline 320
 0272           ;        uchar i;
 0272           ;        uchar time1[16]="  今天的日期是:";
 0272 80E0              ldi R24,<L77
 0274 90E0              ldi R25,>L77
 0276 FE01              movw R30,R28
 0278 00E1              ldi R16,16
 027A 10E0              ldi R17,0
 027C FA93              st -y,R31
 027E EA93              st -y,R30
 0280 9A93              st -y,R25
 0282 8A93              st -y,R24
 0284 00D0              rcall asgncblk
 0286                   .dbline 321
 0286           ;        uchar time2[16]="  当前的时间是:";
 0286 80E0              ldi R24,<L78
 0288 90E0              ldi R25,>L78
 028A FE01              movw R30,R28
 028C 7096              adiw R30,16
 028E 00E1              ldi R16,16
 0290 10E0              ldi R17,0

⌨️ 快捷键说明

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