📄 12864a.lss.svn-base
字号:
//Enable the counter.
TCCR1A = (1 << WGM10) | (1 << COM1A1);
6dc: 81 e8 ldi r24, 0x81 ; 129
6de: 80 83 st Z, r24
TCCR1B = (1 << CS12) | (1 << CS10) | (1 << WGM12);
6e0: 8d e0 ldi r24, 0x0D ; 13
6e2: 8c 93 st X, r24
}
6e4: 08 95 ret
000006e6 <Initialize_And_Start_Timer_2_32_Hz_and_Backlight>:
//============================================================================
void Initialize_And_Start_Timer_2_32_Hz_and_Backlight(void)
{
6e6: e0 eb ldi r30, 0xB0 ; 176
6e8: f0 e0 ldi r31, 0x00 ; 0
6ea: 10 82 st Z, r1
//Stop the timer for now.
TCCR2A=0x00;
TCCR2B=0x00;
6ec: a1 eb ldi r26, 0xB1 ; 177
6ee: b0 e0 ldi r27, 0x00 ; 0
6f0: 1c 92 st X, r1
//Make sure the interrupt is disabled
TIMSK2=0;
6f2: 10 92 70 00 sts 0x0070, r1
//Reset the hardware timer count. The timer is stopped.
TCNT2=0;
6f6: 10 92 b2 00 sts 0x00B2, r1
//Set the compare to 255 = 100%, LCD backlight is on.
OCR2A=255;
6fa: 8f ef ldi r24, 0xFF ; 255
6fc: 80 93 b3 00 sts 0x00B3, r24
// TCCR1A:
// COM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11 WGM10
// 0 1 0 0 0 0 0 1
//Enable the counter.
TCCR2A = (1 << WGM20) | (1 << WGM21) | (1 << COM2A1);
700: 83 e8 ldi r24, 0x83 ; 131
702: 80 83 st Z, r24
TCCR2B = (1 << CS22) | (1 << CS21) | (1 << CS20);
704: 87 e0 ldi r24, 0x07 ; 7
706: 8c 93 st X, r24
}
708: 08 95 ret
0000070a <Initialize_And_Start_Timer_3_32_Hz_and_Backlight>:
//============================================================================
void Initialize_And_Start_Timer_3_32_Hz_and_Backlight(void)
{
70a: e0 e9 ldi r30, 0x90 ; 144
70c: f0 e0 ldi r31, 0x00 ; 0
70e: 10 82 st Z, r1
//Stop the timer for now.
TCCR3A=0x00;
TCCR3B=0x00;
710: a1 e9 ldi r26, 0x91 ; 145
712: b0 e0 ldi r27, 0x00 ; 0
714: 1c 92 st X, r1
//Make sure the interrupt is disabled.
TIMSK3=0;
716: 10 92 71 00 sts 0x0071, r1
//Reset the hardware timer count. The timer is stopped.
TCNT3=0;
71a: 10 92 95 00 sts 0x0095, r1
71e: 10 92 94 00 sts 0x0094, r1
//Set the compare to 255 = 100%, LCD backlight is on.
OCR3A=255;
722: 8f ef ldi r24, 0xFF ; 255
724: 90 e0 ldi r25, 0x00 ; 0
726: 90 93 99 00 sts 0x0099, r25
72a: 80 93 98 00 sts 0x0098, r24
// TCCR1A:
// COM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11 WGM10
// 0 1 0 0 0 0 0 1
//Enable the counter.
TCCR3A = (1 << WGM30) | (1 << COM3A1);
72e: 81 e8 ldi r24, 0x81 ; 129
730: 80 83 st Z, r24
TCCR3B = (1 << CS32) | (1 << CS30) | (1 << WGM32);
732: 8d e0 ldi r24, 0x0D ; 13
734: 8c 93 st X, r24
}
736: 08 95 ret
00000738 <Initialize_GPIO>:
// Port Direction Initialization.
//
// This routine will set the default processor port directions.
//----------------------------------------------------------------------------
void Initialize_GPIO(void)
{
738: 9f ef ldi r25, 0xFF ; 255
73a: 91 b9 out 0x01, r25 ; 1
* 2: LCD_DB2, output, low
* 1: LCD_DB1, output, low
* 0: LCD_DB0, output, low
*/
DDRA = 0b11111111;
PORTA = 0b00000000;
73c: 12 b8 out 0x02, r1 ; 2
* 3: MISO, output, low
* 2: MOSI, output, low
* 1: SCK, output, low
* 0: nSS, output, low
*/
DDRB = 0b10111111;
73e: 8f eb ldi r24, 0xBF ; 191
740: 84 b9 out 0x04, r24 ; 4
PORTB = 0b01110000;
742: 80 e7 ldi r24, 0x70 ; 112
744: 85 b9 out 0x05, r24 ; 5
* 3: LCD_CS2, output, high
* 2: LCD_RST, output, low
* 1: LCD_CS3, output, high
* 0: NC input, pull-up
*/
DDRC = 0b11111110;
746: 8e ef ldi r24, 0xFE ; 254
748: 87 b9 out 0x07, r24 ; 7
PORTC = 0b11011011;
74a: 8b ed ldi r24, 0xDB ; 219
74c: 88 b9 out 0x08, r24 ; 8
* 3: NC, input, pull-up
* 2: LED2, input, pull-up
* 1: LED1, input, pull-up
* 0: NC, input, pull-up
*/
DDRD = 0b00000110;
74e: 86 e0 ldi r24, 0x06 ; 6
750: 8a b9 out 0x0a, r24 ; 10
PORTD = 0b11111001;
752: 89 ef ldi r24, 0xF9 ; 249
754: 8b b9 out 0x0b, r24 ; 11
* 3: LCD_BL_GRN, output, high
* 2: NC, input, pull-up
* 1: NC, input, pull-up
* 0: NC, input, pull-up
*/
DDRE = 0b00001000;
756: 88 e0 ldi r24, 0x08 ; 8
758: 8d b9 out 0x0d, r24 ; 13
PORTE = 0b11111111;
75a: 9e b9 out 0x0e, r25 ; 14
* 3: NC, input, pull-up
* 2: NC, input, pull-up
* 1: NC, input, pull-up
* 0: NC, input, pull-up
*/
DDRG = 0b00010000;
75c: 80 e1 ldi r24, 0x10 ; 16
75e: 83 bb out 0x13, r24 ; 19
PORTG = 0b11111111;
760: 94 bb out 0x14, r25 ; 20
}
762: 08 95 ret
00000764 <update_contrast>:
//============================================================================
void update_contrast(unsigned char contrast)
{
764: 9f ef ldi r25, 0xFF ; 255
766: 89 9f mul r24, r25
768: c0 01 movw r24, r0
76a: 11 24 eor r1, r1
76c: 64 e6 ldi r22, 0x64 ; 100
76e: 70 e0 ldi r23, 0x00 ; 0
770: 0e 94 fe 03 call 0x7fc ; 0x7fc <__udivmodhi4>
774: 67 bd out 0x27, r22 ; 39
OCR0A = ((unsigned short)contrast * 255) / 100;
// OCR0A = ((uword)contrast * 128) / 100;
}
776: 08 95 ret
00000778 <update_backlight>:
//============================================================================
void update_backlight(unsigned char backlight)
{
778: 9f ef ldi r25, 0xFF ; 255
77a: 89 9f mul r24, r25
77c: c0 01 movw r24, r0
77e: 11 24 eor r1, r1
780: 64 e6 ldi r22, 0x64 ; 100
782: 70 e0 ldi r23, 0x00 ; 0
784: 0e 94 fe 03 call 0x7fc ; 0x7fc <__udivmodhi4>
788: 70 93 89 00 sts 0x0089, r23
78c: 60 93 88 00 sts 0x0088, r22
OCR1A = ((unsigned short)backlight * 255) / 100;
// OCR2A = ((uword)backlight * 255) / 100;
// OCR3A = ((uword)backlight * 255) / 100;
}
790: 08 95 ret
00000792 <Initialize_contrast_backlight_and_LCD>:
//============================================================================
void Initialize_contrast_backlight_and_LCD()
{
792: ef 92 push r14
794: ff 92 push r15
796: 0f 93 push r16
798: 1f 93 push r17
register unsigned char contrast;
register unsigned char backlight;
// copy the bitmap from flash to memory
memcpy_P(display, boot_logo, sizeof(display));
79a: 0c ec ldi r16, 0xCC ; 204
79c: 10 e0 ldi r17, 0x00 ; 0
79e: 81 e0 ldi r24, 0x01 ; 1
7a0: e8 2e mov r14, r24
7a2: 82 e0 ldi r24, 0x02 ; 2
7a4: f8 2e mov r15, r24
7a6: 40 e0 ldi r20, 0x00 ; 0
7a8: 54 e0 ldi r21, 0x04 ; 4
7aa: b8 01 movw r22, r16
7ac: c7 01 movw r24, r14
7ae: 0e 94 ee 03 call 0x7dc ; 0x7dc <memcpy_P>
// Reset the LCD
ResetLCD();
7b2: 0e 94 35 03 call 0x66a ; 0x66a <ResetLCD>
//Start the timers.
Initialize_And_Start_Timer_0_LCD_Contrast_PWM();
7b6: 0e 94 51 03 call 0x6a2 ; 0x6a2 <Initialize_And_Start_Timer_0_LCD_Contrast_PWM>
Initialize_And_Start_Timer_1_32_Hz_and_Backlight();
7ba: 0e 94 5c 03 call 0x6b8 ; 0x6b8 <Initialize_And_Start_Timer_1_32_Hz_and_Backlight>
// Initializes the LCD, also takes LCD out of reset
InitializeLCD();
7be: 0e 94 3b 03 call 0x676 ; 0x676 <InitializeLCD>
// Copies from the array in flash to RAM
memcpy_P(display, boot_logo, sizeof(display));
7c2: 40 e0 ldi r20, 0x00 ; 0
7c4: 54 e0 ldi r21, 0x04 ; 4
7c6: b8 01 movw r22, r16
7c8: c7 01 movw r24, r14
7ca: 0e 94 ee 03 call 0x7dc ; 0x7dc <memcpy_P>
PORTG = 0b11111111;
}
//============================================================================
void update_contrast(unsigned char contrast)
{
OCR0A = ((unsigned short)contrast * 255) / 100;
7ce: 89 e1 ldi r24, 0x19 ; 25
7d0: 87 bd out 0x27, r24 ; 39
contrast = 10;
update_contrast(contrast);
backlight = 100;
}
7d2: 1f 91 pop r17
7d4: 0f 91 pop r16
7d6: ff 90 pop r15
7d8: ef 90 pop r14
7da: 08 95 ret
000007dc <memcpy_P>:
7dc: fb 01 movw r30, r22
7de: dc 01 movw r26, r24
7e0: 02 c0 rjmp .+4 ; 0x7e6 <memcpy_P+0xa>
7e2: 05 90 lpm r0, Z+
7e4: 0d 92 st X+, r0
7e6: 41 50 subi r20, 0x01 ; 1
7e8: 50 40 sbci r21, 0x00 ; 0
7ea: d8 f7 brcc .-10 ; 0x7e2 <memcpy_P+0x6>
7ec: 08 95 ret
000007ee <memset>:
7ee: dc 01 movw r26, r24
7f0: 01 c0 rjmp .+2 ; 0x7f4 <memset+0x6>
7f2: 6d 93 st X+, r22
7f4: 41 50 subi r20, 0x01 ; 1
7f6: 50 40 sbci r21, 0x00 ; 0
7f8: e0 f7 brcc .-8 ; 0x7f2 <memset+0x4>
7fa: 08 95 ret
000007fc <__udivmodhi4>:
7fc: aa 1b sub r26, r26
7fe: bb 1b sub r27, r27
800: 51 e1 ldi r21, 0x11 ; 17
802: 07 c0 rjmp .+14 ; 0x812 <__udivmodhi4_ep>
00000804 <__udivmodhi4_loop>:
804: aa 1f adc r26, r26
806: bb 1f adc r27, r27
808: a6 17 cp r26, r22
80a: b7 07 cpc r27, r23
80c: 10 f0 brcs .+4 ; 0x812 <__udivmodhi4_ep>
80e: a6 1b sub r26, r22
810: b7 0b sbc r27, r23
00000812 <__udivmodhi4_ep>:
812: 88 1f adc r24, r24
814: 99 1f adc r25, r25
816: 5a 95 dec r21
818: a9 f7 brne .-22 ; 0x804 <__udivmodhi4_loop>
81a: 80 95 com r24
81c: 90 95 com r25
81e: bc 01 movw r22, r24
820: cd 01 movw r24, r26
822: 08 95 ret
00000824 <_exit>:
824: f8 94 cli
00000826 <__stop_program>:
826: ff cf rjmp .-2 ; 0x826 <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -