📄 rtc.lst
字号:
3DA 9140 010A LDS R20,adc_old
3DC 9150 010B LDS R21,adc_old+1
3DE E880 LDI R24,0x80
3DF E091 LDI R25,1
3E0 1784 CP R24,R20
3E1 0795 CPC R25,R21
3E2 F008 BCS 0x03E4
3E3 C051 RJMP 0x0435
3E4 3240 CPI R20,0x20
3E5 E0E2 LDI R30,2
3E6 075E CPC R21,R30
3E7 F008 BCS 0x03E9
3E8 C04C RJMP 0x0435
(0233) {
(0234) int x;
(0235) for(x=50;x>0;x--)
3E9 E342 LDI R20,0x32
3EA E050 LDI R21,0
(0236) {
(0237) PORTE=seg_table[i]; //点亮个位及其小数点
3EB E58C LDI R24,0x5C
3EC E090 LDI R25,0
3ED 91E0 0104 LDS R30,i
3EF 91F0 0105 LDS R31,i+1
3F1 0FE8 ADD R30,R24
3F2 1FF9 ADC R31,R25
3F3 9024 LPM R2,261(Z)
3F4 B82E OUT 0x0E,R2
(0238) PORTB=0xef; //点亮个位
3F5 EE8F LDI R24,0xEF
3F6 B985 OUT 0x05,R24
(0239) delay_ms(1);
3F7 E001 LDI R16,1
3F8 E010 LDI R17,0
3F9 940E 0064 CALL _delay_ms
(0240) PORTE=seg_table[j]; //点亮十位
3FB E58C LDI R24,0x5C
3FC E090 LDI R25,0
3FD 91E0 0106 LDS R30,j
3FF 91F0 0107 LDS R31,j+1
401 0FE8 ADD R30,R24
402 1FF9 ADC R31,R25
403 9024 LPM R2,263(Z)
404 B82E OUT 0x0E,R2
(0241) PORTB=0XDF; //点亮十位
405 ED8F LDI R24,0xDF
406 B985 OUT 0x05,R24
(0242) delay_ms(1);
407 E001 LDI R16,1
408 E010 LDI R17,0
409 940E 0064 CALL _delay_ms
(0243) PORTE=seg_table[k]&0x7f; //点亮百位
40B E58C LDI R24,0x5C
40C E090 LDI R25,0
40D 91E0 0108 LDS R30,k
40F 91F0 0109 LDS R31,k+1
411 0FE8 ADD R30,R24
412 1FF9 ADC R31,R25
413 9184 LPM R24,265(Z)
414 778F ANDI R24,0x7F
415 B98E OUT 0x0E,R24
(0244) PORTB=0XBF; //点亮百位
416 EB8F LDI R24,0xBF
417 B985 OUT 0x05,R24
(0245) delay_ms(1);
418 E001 LDI R16,1
419 E010 LDI R17,0
41A 940E 0064 CALL _delay_ms
41C 5041 SUBI R20,1
41D 4050 SBCI R21,0
41E 2422 CLR R2
41F 2433 CLR R3
420 1624 CP R2,R20
421 0635 CPC R3,R21
422 F40C BGE 0x0424
423 CFC7 RJMP 0x03EB
(0246) }
(0247) k++; //加1
424 9180 0108 LDS R24,k
426 9190 0109 LDS R25,k+1
428 9601 ADIW R24,1
429 9390 0109 STS k+1,R25
42B 9380 0108 STS k,R24
(0248) if(k==10)
42D 308A CPI R24,0xA
42E E0E0 LDI R30,0
42F 079E CPC R25,R30
430 F421 BNE 0x0435
(0249) {
(0250) k=0;
431 9230 0109 STS k+1,R3
433 9220 0108 STS k,R2
(0251) }
(0252) }
(0253) if(s4)
435 9140 010A LDS R20,adc_old
437 9150 010B LDS R21,adc_old+1
439 ED80 LDI R24,0xD0
43A E092 LDI R25,2
43B 1784 CP R24,R20
43C 0795 CPC R25,R21
43D F008 BCS 0x043F
43E C053 RJMP 0x0492
43F 3140 CPI R20,0x10
440 E0E3 LDI R30,3
441 075E CPC R21,R30
442 F008 BCS 0x0444
443 C04E RJMP 0x0492
(0254) {int x;
(0255) for(x=50;x>0;x--)
444 E342 LDI R20,0x32
445 E050 LDI R21,0
(0256) {
(0257) PORTE=seg_table[i]; //点亮个位及其小数点
446 E58C LDI R24,0x5C
447 E090 LDI R25,0
448 91E0 0104 LDS R30,i
44A 91F0 0105 LDS R31,i+1
44C 0FE8 ADD R30,R24
44D 1FF9 ADC R31,R25
44E 9024 LPM R2,261(Z)
44F B82E OUT 0x0E,R2
(0258) PORTB=0xef; //点亮个位
450 EE8F LDI R24,0xEF
451 B985 OUT 0x05,R24
(0259) delay_ms(1);
452 E001 LDI R16,1
453 E010 LDI R17,0
454 940E 0064 CALL _delay_ms
(0260) PORTE=seg_table[j]; //点亮十位
456 E58C LDI R24,0x5C
457 E090 LDI R25,0
458 91E0 0106 LDS R30,j
45A 91F0 0107 LDS R31,j+1
45C 0FE8 ADD R30,R24
45D 1FF9 ADC R31,R25
45E 9024 LPM R2,263(Z)
45F B82E OUT 0x0E,R2
(0261) PORTB=0XDF; //点亮十位
460 ED8F LDI R24,0xDF
461 B985 OUT 0x05,R24
(0262) delay_ms(1);
462 E001 LDI R16,1
463 E010 LDI R17,0
464 940E 0064 CALL _delay_ms
(0263) PORTE=seg_table[k]&0x7f; //点亮百位
466 E58C LDI R24,0x5C
467 E090 LDI R25,0
468 91E0 0108 LDS R30,k
46A 91F0 0109 LDS R31,k+1
46C 0FE8 ADD R30,R24
46D 1FF9 ADC R31,R25
46E 9184 LPM R24,265(Z)
46F 778F ANDI R24,0x7F
470 B98E OUT 0x0E,R24
(0264) PORTB=0XBF; //点亮百位
471 EB8F LDI R24,0xBF
472 B985 OUT 0x05,R24
(0265) delay_ms(1);
473 E001 LDI R16,1
474 E010 LDI R17,0
475 940E 0064 CALL _delay_ms
477 5041 SUBI R20,1
478 4050 SBCI R21,0
479 2422 CLR R2
47A 2433 CLR R3
47B 1624 CP R2,R20
47C 0635 CPC R3,R21
47D F40C BGE 0x047F
47E CFC7 RJMP 0x0446
(0266) }
(0267) k--; //减1
47F 9180 0108 LDS R24,k
481 9190 0109 LDS R25,k+1
483 9701 SBIW R24,1
484 9390 0109 STS k+1,R25
486 9380 0108 STS k,R24
(0268) if(k==-1)
488 3F8F CPI R24,0xFF
489 EFEF LDI R30,0xFF
48A 079E CPC R25,R30
48B F431 BNE 0x0492
(0269) {
(0270) k=9;
48C E089 LDI R24,0x9
48D E090 LDI R25,0
48E 9390 0109 STS k+1,R25
490 9380 0108 STS k,R24
492 9180 010A LDS R24,adc_old
494 9190 010B LDS R25,adc_old+1
496 3083 CPI R24,3
497 E0E0 LDI R30,0
498 079E CPC R25,R30
499 F008 BCS 0x049B
49A CEFB RJMP 0x0396
49B C008 RJMP 0x04A4
(0271) }
(0272) }
(0273) }
(0274) //***********
(0275) while(s1){adc_old=adc_rel;} //跳出
49C 9020 010C LDS R2,adc_rel
49E 9030 010D LDS R3,adc_rel+1
4A0 9230 010B STS adc_old+1,R3
4A2 9220 010A STS adc_old,R2
4A4 9180 010A LDS R24,adc_old
4A6 9190 010B LDS R25,adc_old+1
4A8 3083 CPI R24,3
4A9 E0E0 LDI R30,0
4AA 079E CPC R25,R30
4AB F380 BCS 0x049C
4AC 9180 010A LDS R24,adc_old
4AE 9190 010B LDS R25,adc_old+1
4B0 3083 CPI R24,3
4B1 E0E0 LDI R30,0
4B2 079E CPC R25,R30
4B3 F408 BCC 0x04B5
4B4 CCAC RJMP 0x0161
4B5 9159 LD R21,Y+
4B6 9149 LD R20,Y+
4B7 9508 RET
(0276) }
(0277) }
(0278) void main(void)
(0279) {
(0280) adc_init();//AD初始化
_main:
4B8 DBF2 RCALL _adc_init
(0281) timer2_init();//定时器初始化
4B9 DBFD RCALL _timer2_init
(0282) portE_B();
4BA DBE6 RCALL _portE_B
(0283) TIMSK2=1;
4BB E081 LDI R24,1
4BC 9380 0070 STS 0x0070,R24
(0284) SEI();//使能全局中断
4BE 9478 BSET 7
4BF C006 RJMP 0x04C6
(0285) while(1)
(0286) {
(0287) TIMSK2=1;
4C0 E081 LDI R24,1
4C1 9380 0070 STS 0x0070,R24
(0288) display(); //显示
4C3 940E 0073 CALL _display
(0289) keyScan(); //键值扫描
4C5 DC87 RCALL _keyScan
4C6 CFF9 RJMP 0x04C0
4C7 9508 RET
FILE: C:\TDdownload\zxy\169demo\169RTC\uart.c
(0001) #include <iom169v.h>
(0002) #include <macros.h>
(0003) #define fosc 1000000 //晶振1MHZ
(0004) #define baud 19200 //波特率
(0005) /* 字符输出函数 */
(0006) void putchar(unsigned char c)
(0007) {
(0008) while (!(UCSRA&(1<<UDRE)));
_putchar:
c --> R16
4C8 9020 00C0 LDS R2,0x00C0
4CA FE25 SBRS R2,5
4CB CFFC RJMP _putchar
(0009) UDR=c;
4CC 9300 00C6 STS 0x00C6,R16
4CE 9508 RET
(0010) }
(0011) /* 字符输入函数 */
(0012) unsigned char getchar(void)
(0013) {
(0014) while(!(UCSRA&(1<<RXC)));
_getchar:
4CF 9020 00C0 LDS R2,0x00C0
4D1 FE27 SBRS R2,7
4D2 CFFC RJMP _getchar
(0015) return UDR;
4D3 9100 00C6 LDS R16,0x00C6
4D5 9508 RET
_puts:
s --> R20
4D6 934A ST R20,-Y
4D7 935A ST R21,-Y
4D8 01A8 MOVW R20,R16
(0016) }
(0017) /* 字符串输出函数 */
(0018) void puts(char *s)
(0019) {
4D9 C005 RJMP 0x04DF
(0020) while (*s)
(0021) {
(0022) putchar(*s);
4DA 01FA MOVW R30,R20
4DB 8100 LDD R16,Z+0
4DC DFEB RCALL _putchar
(0023) s++;
4DD 5F4F SUBI R20,0xFF
4DE 4F5F SBCI R21,0xFF
4DF 01FA MOVW R30,R20
4E0 8020 LDD R2,Z+0
4E1 2022 TST R2
4E2 F7B9 BNE 0x04DA
(0024) }
(0025) putchar(0x0a);//回车换行
4E3 E00A LDI R16,0xA
4E4 DFE3 RCALL _putchar
(0026) putchar(0x0d);
4E5 E00D LDI R16,0xD
4E6 DFE1 RCALL _putchar
4E7 9159 LD R21,Y+
4E8 9149 LD R20,Y+
4E9 9508 RET
(0027) }
(0028) /* UART初始化 */
(0029) void uart_init(void)
(0030) {
(0031) UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收
_uart_init:
4EA E988 LDI R24,0x98
4EB 9380 00C1 STS 0x00C1,R24
(0032) UBRRL=(fosc/16/(baud+1))%256;
4ED E083 LDI R24,3
4EE 9380 00C4 STS 0x00C4,R24
(0033) UBRRH=(fosc/16/(baud+1))/256;
4F0 2422 CLR R2
4F1 9220 00C5 STS 0x00C5,R2
(0034) UCSRC=(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
FILE: <library>
4F3 E086 LDI R24,6
4F4 9380 00C2 STS 0x00C2,R24
4F6 9508 RET
lsl8:
4F7 2311 TST R17
4F8 F019 BEQ 0x04FC
4F9 0F00 LSL R16
4FA 951A DEC R17
4FB CFFB RJMP lsl8
4FC 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -