📄 ac15-4.lis
字号:
04E2 L114:
04E2 .dbline 289
04E2 ;
04E2 ; //*************************
04E2 ; case 0xfb:i2c_Write(11,time2.hour);
04E2 20910000 lds R18,_time2
04E6 0BE0 ldi R16,11
04E8 8DDE xcall _i2c_Write
04EA .dbline 290
04EA ; delay_ms(10);
04EA 0AE0 ldi R16,10
04EC 10E0 ldi R17,0
04EE 8DD0 xcall _delay_ms
04F0 .dbline 291
04F0 ; i2c_Write(12,time2.min);
04F0 20910100 lds R18,_time2+1
04F4 0CE0 ldi R16,12
04F6 86DE xcall _i2c_Write
04F8 .dbline 292
04F8 ; delay_ms(10);
04F8 0AE0 ldi R16,10
04FA 10E0 ldi R17,0
04FC 86D0 xcall _delay_ms
04FE .dbline 293
04FE ; DisplayOneChar(13,1,0x57);
04FE 87E5 ldi R24,87
0500 8883 std y+0,R24
0502 21E0 ldi R18,1
0504 0DE0 ldi R16,13
0506 BBDD xcall _DisplayOneChar
0508 .dbline 294
0508 ; delay_ms(10);break;
0508 0AE0 ldi R16,10
050A 10E0 ldi R17,0
050C 7ED0 xcall _delay_ms
050E .dbline 294
050E 16C0 xjmp L90
0510 L116:
0510 .dbline 295
0510 ; case 0xf7:time2.hour=i2c_Read(11);
0510 0BE0 ldi R16,11
0512 28DE xcall _i2c_Read
0514 00930000 sts _time2,R16
0518 .dbline 296
0518 ; delay_ms(10);
0518 0AE0 ldi R16,10
051A 10E0 ldi R17,0
051C 76D0 xcall _delay_ms
051E .dbline 297
051E ; time2.min=i2c_Read(12);
051E 0CE0 ldi R16,12
0520 21DE xcall _i2c_Read
0522 00930100 sts _time2+1,R16
0526 .dbline 298
0526 ; delay_ms(10);
0526 0AE0 ldi R16,10
0528 10E0 ldi R17,0
052A 6FD0 xcall _delay_ms
052C .dbline 299
052C ; DisplayOneChar(13,1,0x52);
052C 82E5 ldi R24,82
052E 8883 std y+0,R24
0530 21E0 ldi R18,1
0532 0DE0 ldi R16,13
0534 A4DD xcall _DisplayOneChar
0536 .dbline 300
0536 ; delay_ms(10);break;
0536 0AE0 ldi R16,10
0538 10E0 ldi R17,0
053A 67D0 xcall _delay_ms
053C .dbline 300
053C .dbline 301
053C ; default:break;
053C L90:
053C .dbline 303
053C 0CE2 ldi R16,300
053E 11E0 ldi R17,1
0540 64D0 xcall _delay_ms
0542 .dbline 304
0542 80E2 ldi R24,32
0544 8883 std y+0,R24
0546 21E0 ldi R18,1
0548 0DE0 ldi R16,13
054A 99DD xcall _DisplayOneChar
054C .dbline 305
054C 0AE0 ldi R16,10
054E 10E0 ldi R17,0
0550 5CD0 xcall _delay_ms
0552 .dbline 307
0552 L81:
0552 .dbline 250
0552 BDCE xjmp L80
0554 X1:
0554 .dbline -2
0554 L79:
0554 2296 adiw R28,2
0556 .dbline 0 ; func end
0556 0895 ret
0558 .dbsym r key_val 22 c
0558 .dbend
.area vector(rom, abs)
.org 32
0020 0C94AC02 jmp _timer1_ovf_isr
.area text(rom, con, rel)
0558 .dbfile d:\MYDOCU~1\ac15-4\ac15-4.c
0558 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0558 _timer1_ovf_isr::
0558 2A92 st -y,R2
055A 3A92 st -y,R3
055C 8A93 st -y,R24
055E 9A93 st -y,R25
0560 2FB6 in R2,0x3f
0562 2A92 st -y,R2
0564 .dbline -1
0564 .dbline 312
0564 ; }
0564 ; delay_ms(300);
0564 ; DisplayOneChar(13,1,0x20);
0564 ; delay_ms(10);
0564 ;
0564 ; }
0564 ; }
0564 ; /***********************定时器T1中断子函数**********************/
0564 ; #pragma interrupt_handler timer1_ovf_isr:9
0564 ; void timer1_ovf_isr(void)
0564 ; {
0564 .dbline 314
0564 ; //TIMER1 has overflowed
0564 ; TCNT1H = 0xF3; //reload counter high value
0564 83EF ldi R24,243
0566 8DBD out 0x2d,R24
0568 .dbline 315
0568 ; TCNT1L = 0xCB; //reload counter low value
0568 8BEC ldi R24,203
056A 8CBD out 0x2c,R24
056C .dbline 316
056C ; if(++time1.dida>=10){time1.dida=0;time1.sec++;}
056C 80910700 lds R24,_time1+3
0570 8F5F subi R24,255 ; addi 1
0572 282E mov R2,R24
0574 20920700 sts _time1+3,R2
0578 8A30 cpi R24,10
057A 40F0 brlo L124
057C .dbline 316
057C .dbline 316
057C 2224 clr R2
057E 20920700 sts _time1+3,R2
0582 .dbline 316
0582 80910600 lds R24,_time1+2
0586 8F5F subi R24,255 ; addi 1
0588 80930600 sts _time1+2,R24
058C .dbline 316
058C L124:
058C .dbline 317
058C ; if(time1.sec>=60){time1.sec=0;time1.min++;}
058C 80910600 lds R24,_time1+2
0590 8C33 cpi R24,60
0592 40F0 brlo L129
0594 .dbline 317
0594 .dbline 317
0594 2224 clr R2
0596 20920600 sts _time1+2,R2
059A .dbline 317
059A 80910500 lds R24,_time1+1
059E 8F5F subi R24,255 ; addi 1
05A0 80930500 sts _time1+1,R24
05A4 .dbline 317
05A4 L129:
05A4 .dbline 318
05A4 ; if(time1.min>=60){time1.min=0;time1.hour++;}
05A4 80910500 lds R24,_time1+1
05A8 8C33 cpi R24,60
05AA 40F0 brlo L134
05AC .dbline 318
05AC .dbline 318
05AC 2224 clr R2
05AE 20920500 sts _time1+1,R2
05B2 .dbline 318
05B2 80910400 lds R24,_time1
05B6 8F5F subi R24,255 ; addi 1
05B8 80930400 sts _time1,R24
05BC .dbline 318
05BC L134:
05BC .dbline 319
05BC ; if(time1.hour>=24){time1.hour=0;}
05BC 80910400 lds R24,_time1
05C0 8831 cpi R24,24
05C2 18F0 brlo L138
05C4 .dbline 319
05C4 .dbline 319
05C4 2224 clr R2
05C6 20920400 sts _time1,R2
05CA .dbline 319
05CA L138:
05CA .dbline 321
05CA ; //-------------------
05CA ; if((time1.hour==time2.hour)&&(time1.min==time2.min))LED_0;
05CA 20900000 lds R2,_time2
05CE 30900400 lds R3,_time1
05D2 3214 cp R3,R2
05D4 41F4 brne L140
05D6 20900100 lds R2,_time2+1
05DA 30900500 lds R3,_time1+1
05DE 3214 cp R3,R2
05E0 11F4 brne L140
05E2 .dbline 321
05E2 C798 cbi 0x18,7
05E4 01C0 xjmp L141
05E6 L140:
05E6 .dbline 322
05E6 C79A sbi 0x18,7
05E8 L141:
05E8 .dbline -2
05E8 L123:
05E8 2990 ld R2,y+
05EA 2FBE out 0x3f,R2
05EC 9991 ld R25,y+
05EE 8991 ld R24,y+
05F0 3990 ld R3,y+
05F2 2990 ld R2,y+
05F4 .dbline 0 ; func end
05F4 1895 reti
05F6 .dbend
05F6 .dbfunc e init_devices _init_devices fV
.even
05F6 _init_devices::
05F6 .dbline -1
05F6 .dbline 326
05F6 ; else LED_1;
05F6 ; }
05F6 ; /*********************************************/
05F6 ; void init_devices(void)
05F6 ; {
05F6 .dbline 328
05F6 ; //stop errant interrupts until set up
05F6 ; CLI(); //disable all interrupts
05F6 F894 cli
05F8 .dbline 329
05F8 ; port_init();
05F8 A6DD xcall _port_init
05FA .dbline 330
05FA ; timer1_init();
05FA 41DE xcall _timer1_init
05FC .dbline 331
05FC ; MCUCR = 0x00;
05FC 2224 clr R2
05FE 25BE out 0x35,R2
0600 .dbline 332
0600 ; GICR = 0x00;
0600 2BBE out 0x3b,R2
0602 .dbline 333
0602 ; TIMSK = 0x04; //timer interrupt sources
0602 84E0 ldi R24,4
0604 89BF out 0x39,R24
0606 .dbline 334
0606 ; SEI(); //re-enable interrupts
0606 7894 sei
0608 .dbline -2
0608 L144:
0608 .dbline 0 ; func end
0608 0895 ret
060A .dbend
060A .dbfunc e delay_ms _delay_ms fV
060A ; time -> R20,R21
.even
060A _delay_ms::
060A 0E940000 xcall push_gset1
060E A801 movw R20,R16
0610 .dbline -1
0610 .dbline 340
0610 ; //all peripherals are now initialized
0610 ; }
0610 ;
0610 ; /*******************器件初始化********************/
0610 ; void delay_ms(unsigned int time)
0610 ; {
0610 05C0 xjmp L147
0612 L146:
0612 .dbline 342
0612 .dbline 343
0612 08EE ldi R16,1000
0614 13E0 ldi R17,3
0616 08D0 xcall _delay_us
0618 .dbline 344
0618 4150 subi R20,1
061A 5040 sbci R21,0
061C .dbline 345
061C L147:
061C .dbline 341
061C ; while(time!=0)
061C 4030 cpi R20,0
061E 4507 cpc R20,R21
0620 C1F7 brne L146
0622 X13:
0622 .dbline -2
0622 L145:
0622 0E940000 xcall pop_gset1
0626 .dbline 0 ; func end
0626 0895 ret
0628 .dbsym r time 20 i
0628 .dbend
0628 .dbfunc e delay_us _delay_us fV
0628 ; time -> R16,R17
.even
0628 _delay_us::
0628 .dbline -1
0628 .dbline 350
0628 ; {
0628 ; delay_us(1000);
0628 ; time--;
0628 ; }
0628 ; }
0628 ;
0628 ; /*****************廷时子函数************************/
0628 ; void delay_us(int time)
0628 ; {
0628 L150:
0628 .dbline 352
0628 ; do
0628 ; {
0628 .dbline 353
0628 ; time--;
0628 0150 subi R16,1
062A 1040 sbci R17,0
062C .dbline 354
062C ; }
062C L151:
062C .dbline 355
062C ; while (time>1);
062C 81E0 ldi R24,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -