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

📄 mega16.lis

📁 hao da jia lai fen xiang
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 004A           ;       }
 004A           ; }
 004A           ; //-------------------------------------------------------------------------
 004A           ; void delay_ms(uint time)
 004A           ; {
 004A                   .dbline 58
 004A           ;       uint i;
 004A           ;       for(i=0;i<time;i++)
 004A 4427              clr R20
 004C 5527              clr R21
 004E 05C0              xjmp L11
 0050           L8:
 0050                   .dbline 59
 0050                   .dbline 60
 0050 08EE              ldi R16,1000
 0052 13E0              ldi R17,3
 0054 E2DF              xcall _delay_us
 0056                   .dbline 61
 0056           L9:
 0056                   .dbline 58
 0056 4F5F              subi R20,255  ; offset = 1
 0058 5F4F              sbci R21,255
 005A           L11:
 005A                   .dbline 58
 005A 4617              cp R20,R22
 005C 5707              cpc R21,R23
 005E C0F3              brlo L8
 0060                   .dbline -2
 0060           L7:
 0060 0E940000          xcall pop_gset2
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbsym r i 20 i
 0066                   .dbsym r time 22 i
 0066                   .dbend
 0066                   .dbfunc e count_write _count_write fV
 0066           ;          count -> y+6
 0066           ;              y -> R22
 0066           ;              x -> R20
                        .even
 0066           _count_write::
 0066 0E940000          xcall push_gset2
 006A 622F              mov R22,R18
 006C 402F              mov R20,R16
 006E 2297              sbiw R28,2
 0070                   .dbline -1
 0070                   .dbline 65
 0070           ;       {
 0070           ;               delay_us(1000);
 0070           ;       }
 0070           ; }
 0070           ; /******************************************************************************/
 0070           ; void count_write(uchar x,uchar y,uchar count)
 0070           ; {
 0070                   .dbline 66
 0070           ;       lcd_print816(x,y,count_array[count >> 4]);
 0070 8E81              ldd R24,y+6
 0072 8295              swap R24
 0074 8F70              andi R24,#0x0F
 0076 92E0              ldi R25,2
 0078 989F              mul R25,R24
 007A F001              movw R30,R0
 007C 80E0              ldi R24,<_count_array
 007E 90E0              ldi R25,>_count_array
 0080 E80F              add R30,R24
 0082 F91F              adc R31,R25
 0084 2080              ldd R2,z+0
 0086 3180              ldd R3,z+1
 0088 3982              std y+1,R3
 008A 2882              std y+0,R2
 008C 262F              mov R18,R22
 008E 042F              mov R16,R20
 0090 0E940000          xcall _lcd_print816
 0094                   .dbline 67
 0094           ;       lcd_print816(x,y+8,count_array[count & 0xf]);
 0094 8E81              ldd R24,y+6
 0096 8F70              andi R24,15
 0098 92E0              ldi R25,2
 009A 989F              mul R25,R24
 009C F001              movw R30,R0
 009E 80E0              ldi R24,<_count_array
 00A0 90E0              ldi R25,>_count_array
 00A2 E80F              add R30,R24
 00A4 F91F              adc R31,R25
 00A6 2080              ldd R2,z+0
 00A8 3180              ldd R3,z+1
 00AA 3982              std y+1,R3
 00AC 2882              std y+0,R2
 00AE 262F              mov R18,R22
 00B0 285F              subi R18,248    ; addi 8
 00B2 042F              mov R16,R20
 00B4 0E940000          xcall _lcd_print816
 00B8                   .dbline -2
 00B8           L12:
 00B8 2296              adiw R28,2
 00BA 0E940000          xcall pop_gset2
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbsym l count 6 c
 00C0                   .dbsym r y 22 c
 00C0                   .dbsym r x 20 c
 00C0                   .dbend
 00C0                   .dbfunc e count_reverse _count_reverse fV
 00C0           ;          count -> y+6
 00C0           ;              y -> R22
 00C0           ;              x -> R20
                        .even
 00C0           _count_reverse::
 00C0 0E940000          xcall push_gset2
 00C4 622F              mov R22,R18
 00C6 402F              mov R20,R16
 00C8 2297              sbiw R28,2
 00CA                   .dbline -1
 00CA                   .dbline 71
 00CA           ; }
 00CA           ; /******************************************************************************/
 00CA           ; void count_reverse(uchar x,uchar y,uchar count)
 00CA           ; {
 00CA                   .dbline 72
 00CA           ;       lcd_reverse816(x,y,count_array[count>>4]);
 00CA 8E81              ldd R24,y+6
 00CC 8295              swap R24
 00CE 8F70              andi R24,#0x0F
 00D0 92E0              ldi R25,2
 00D2 989F              mul R25,R24
 00D4 F001              movw R30,R0
 00D6 80E0              ldi R24,<_count_array
 00D8 90E0              ldi R25,>_count_array
 00DA E80F              add R30,R24
 00DC F91F              adc R31,R25
 00DE 2080              ldd R2,z+0
 00E0 3180              ldd R3,z+1
 00E2 3982              std y+1,R3
 00E4 2882              std y+0,R2
 00E6 262F              mov R18,R22
 00E8 042F              mov R16,R20
 00EA 0E940000          xcall _lcd_reverse816
 00EE                   .dbline 73
 00EE           ;       lcd_reverse816(x,y+8,count_array[count & 0xf]);
 00EE 8E81              ldd R24,y+6
 00F0 8F70              andi R24,15
 00F2 92E0              ldi R25,2
 00F4 989F              mul R25,R24
 00F6 F001              movw R30,R0
 00F8 80E0              ldi R24,<_count_array
 00FA 90E0              ldi R25,>_count_array
 00FC E80F              add R30,R24
 00FE F91F              adc R31,R25
 0100 2080              ldd R2,z+0
 0102 3180              ldd R3,z+1
 0104 3982              std y+1,R3
 0106 2882              std y+0,R2
 0108 262F              mov R18,R22
 010A 285F              subi R18,248    ; addi 8
 010C 042F              mov R16,R20
 010E 0E940000          xcall _lcd_reverse816
 0112                   .dbline -2
 0112           L13:
 0112 2296              adiw R28,2
 0114 0E940000          xcall pop_gset2
 0118                   .dbline 0 ; func end
 0118 0895              ret
 011A                   .dbsym l count 6 c
 011A                   .dbsym r y 22 c
 011A                   .dbsym r x 20 c
 011A                   .dbend
 011A                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 011A           _watchdog_init::
 011A                   .dbline -1
 011A                   .dbline 79
 011A           ; }
 011A           ; /******************************************************************************/
 011A           ; //Watchdog initialize
 011A           ; // prescale: 2048K
 011A           ; void watchdog_init(void)
 011A           ; {
 011A                   .dbline 80
 011A           ;  WDR(); //this prevents a timout on enabling
 011A A895              wdr
 011C                   .dbline 81
 011C           ;  WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
 011C 8FE0              ldi R24,15
 011E 81BD              out 0x21,R24
 0120                   .dbline -2
 0120           L14:
 0120                   .dbline 0 ; func end
 0120 0895              ret
 0122                   .dbend
 0122                   .dbfunc e watchdog_off _watchdog_off fV
                        .even
 0122           _watchdog_off::
 0122                   .dbline -1
 0122                   .dbline 84
 0122           ; }
 0122           ; void watchdog_off(void)
 0122           ; {
 0122                   .dbline 85
 0122           ;       WDR();
 0122 A895              wdr
 0124                   .dbline 86
 0124           ;       WDTCR |= BIT(WDTOE);
 0124 81B5              in R24,0x21
 0126 8061              ori R24,16
 0128 81BD              out 0x21,R24
 012A                   .dbline 87
 012A           ;       WDTCR  = 0x00;
 012A 2224              clr R2
 012C 21BC              out 0x21,R2
 012E                   .dbline -2
 012E           L15:
 012E                   .dbline 0 ; func end
 012E 0895              ret
 0130                   .dbend
 0130                   .dbfunc e init_devices _init_devices fV
                        .even
 0130           _init_devices::
 0130                   .dbline -1
 0130                   .dbline 91
 0130           ; }
 0130           ; //call this routine to initialize all peripherals
 0130           ; void init_devices(void)
 0130           ; {
 0130                   .dbline 93
 0130           ;       //stop errant interrupts until set up
 0130           ;       CLI(); //disable all interrupts
 0130 F894              cli
 0132                   .dbline 94
 0132           ;       port_init();
 0132 66DF              xcall _port_init
 0134                   .dbline 95
 0134           ;       watchdog_init();
 0134 F2DF              xcall _watchdog_init
 0136                   .dbline 97
 0136           ; 
 0136           ;       MCUCR = 0x00;
 0136 2224              clr R2
 0138 25BE              out 0x35,R2
 013A                   .dbline 98
 013A           ;       GICR  = 0xC0;
 013A 80EC              ldi R24,192
 013C 8BBF              out 0x3b,R24
 013E                   .dbline 99
 013E           ;       TIMSK = 0x00; //timer interrupt sources
 013E 29BE              out 0x39,R2
 0140                   .dbline 100
 0140           ;       SEI(); //re-enable interrupts
 0140 7894              sei
 0142                   .dbline -2
 0142           L16:
 0142                   .dbline 0 ; func end
 0142 0895              ret
 0144                   .dbend
 0144                   .dbfunc e time_init _time_init fV
                        .even
 0144           _time_init::
 0144 2197              sbiw R28,1
 0146                   .dbline -1
 0146                   .dbline 105
 0146                   .dbline 107
 0146 89E0              ldi R24,9
 0148 80930100          sts _time_data,R24
 014C                   .dbline 108
 014C 2224              clr R2
 014E 20920200          sts _time_data+1,R2
 0152                   .dbline 109
 0152 20920300          sts _time_data+2,R2
 0156                   .dbline 110
 0156 20920400          sts _time_data+3,R2
 015A                   .dbline 111
 015A 20920500          sts _time_data+4,R2
 015E                   .dbline 112
 015E 80E3              ldi R24,48
 0160 80930600          sts _time_data+5,R24
 0164                   .dbline 113
 0164 82E1              ldi R24,18
 0166 80930700          sts _time_data+6,R24
 016A                   .dbline 114
 016A 86E1              ldi R24,22
 016C 80930800          sts _time_data+7,R24
 0170                   .dbline 115
 0170 20920900          sts _time_data+8,R2
 0174                   .dbline 116
 0174 83E0              ldi R24,3
 0176 80930A00          sts _time_data+9,R24
 017A                   .dbline 118
 017A 80930B00          sts _time_data+10,R24
 017E                   .dbline 119
 017E 00E0              ldi R16,<_time_data
 0180 10E0              ldi R17,>_time_data
 0182 0E940000          xcall _PCF8563Write
 0186 0230              cpi R16,2
 0188 29F4              brne L28
 018A                   .dbline 120
 018A 8FEF              ldi R24,255
 018C 8883              std y+0,R24
 018E 2227              clr R18
 0190 06E0              ldi R16,6
 0192 69DF              xcall _count_write
 0194           L28:
 0194                   .dbline -2
 0194           L17:
 0194 2196              adiw R28,1
 0196                   .dbline 0 ; func end
 0196 0895              ret
 0198                   .dbend
 0198                   .dbfunc e time_read _time_read fV
                        .even
 0198           _time_read::
 0198 2197              sbiw R28,1
 019A                   .dbline -1
 019A                   .dbline 124
 019A           ;       //all peripherals are now initialized
 019A           ; }
 019A           ; 
 019A           ; void time_init(void)
 019A           ; {
 019A           ;       /* 初始化pcf8563 */
 019A           ;       time_data[0] = 9;
 019A           ;       time_data[1] = 0;
 019A           ;       time_data[2] = 0;        //控制/状态寄存器1
 019A           ;       time_data[3] = 0;        //控制/状态寄存器2
 019A           ;       time_data[4] = 0;        //秒
 019A           ;       time_data[5] = 0x30;     //分
 019A           ;       time_data[6] = 0x12;     //时
 019A           ;       time_data[7] = 0x16;     //日
 019A           ;       time_data[8] = 0x00;     //星期
 019A           ;       time_data[9] = 0x03;     //月/世

⌨️ 快捷键说明

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