📄 12864b_w.lss.svn-base
字号:
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_And_Start_Timer_4_32_Hz_and_Backlight>:
//============================================================================
void Initialize_And_Start_Timer_4_32_Hz_and_Backlight(void)
{
738: e0 ea ldi r30, 0xA0 ; 160
73a: f0 e0 ldi r31, 0x00 ; 0
73c: 10 82 st Z, r1
//Stop the timer for now.
TCCR4A=0x00;
TCCR4B=0x00;
73e: a1 ea ldi r26, 0xA1 ; 161
740: b0 e0 ldi r27, 0x00 ; 0
742: 1c 92 st X, r1
//Make sure the interrupt is disabled.
TIMSK4=0;
744: 10 92 72 00 sts 0x0072, r1
//Reset the hardware timer count. The timer is stopped.
TCNT4=0;
748: 10 92 a5 00 sts 0x00A5, r1
74c: 10 92 a4 00 sts 0x00A4, r1
//Set the compare to 255 = 100%, LCD backlight is on.
OCR4A=255;
750: 8f ef ldi r24, 0xFF ; 255
752: 90 e0 ldi r25, 0x00 ; 0
754: 90 93 a9 00 sts 0x00A9, r25
758: 80 93 a8 00 sts 0x00A8, r24
// TCCR1A:
// COM1A1 COM1A0 COM1B1 COM1B0 COM1C1 COM1C0 WGM11 WGM10
// 0 1 0 0 0 0 0 1
//Enable the counter.
TCCR4A = (1 << WGM40) | (1 << COM4A1);
75c: 81 e8 ldi r24, 0x81 ; 129
75e: 80 83 st Z, r24
TCCR4B = (1 << CS40) | (1 << WGM42);
760: 89 e0 ldi r24, 0x09 ; 9
762: 8c 93 st X, r24
}
764: 08 95 ret
00000766 <Initialize_GPIO>:
// Port Direction Initialization.
//
// This routine will set the default processor port directions.
//----------------------------------------------------------------------------
void Initialize_GPIO(void)
{
766: 9f ef ldi r25, 0xFF ; 255
768: 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;
76a: 12 b8 out 0x02, r1 ; 2
* 3: MISO, output, low
* 2: MOSI, output, low
* 1: SCK, output, low
* 0: nSS, output, low
*/
DDRB = 0b10111111;
76c: 8f eb ldi r24, 0xBF ; 191
76e: 84 b9 out 0x04, r24 ; 4
PORTB = 0b01110000;
770: 80 e7 ldi r24, 0x70 ; 112
772: 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;
774: 8e ef ldi r24, 0xFE ; 254
776: 87 b9 out 0x07, r24 ; 7
PORTC = 0b11011011;
778: 8b ed ldi r24, 0xDB ; 219
77a: 88 b9 out 0x08, r24 ; 8
* 3: LCD_EL, output, low
* 2: LED2, input, pull-up
* 1: LED1, input, pull-up
* 0: NC, input, pull-up
*/
DDRD = 0b00001110;
77c: 8e e0 ldi r24, 0x0E ; 14
77e: 8a b9 out 0x0a, r24 ; 10
PORTD = 0b11110001;
780: 81 ef ldi r24, 0xF1 ; 241
782: 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;
784: 88 e0 ldi r24, 0x08 ; 8
786: 8d b9 out 0x0d, r24 ; 13
PORTE = 0b11111111;
788: 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 = 0b00000000;
78a: 13 ba out 0x13, r1 ; 19
PORTG = 0b11111111;
78c: 94 bb out 0x14, r25 ; 20
}
78e: 08 95 ret
00000790 <update_contrast>:
//============================================================================
void update_contrast(unsigned char contrast)
{
790: 9f ef ldi r25, 0xFF ; 255
792: 89 9f mul r24, r25
794: c0 01 movw r24, r0
796: 11 24 eor r1, r1
798: 64 e6 ldi r22, 0x64 ; 100
79a: 70 e0 ldi r23, 0x00 ; 0
79c: 0e 94 05 04 call 0x80a ; 0x80a <__udivmodhi4>
7a0: 67 bd out 0x27, r22 ; 39
OCR0A = ((unsigned short)contrast * 255) / 100;
// OCR0A = ((uword)contrast * 128) / 100;
}
7a2: 08 95 ret
000007a4 <Initialize_contrast_backlight_and_LCD>:
//============================================================================
void Initialize_contrast_backlight_and_LCD()
{
7a4: ef 92 push r14
7a6: ff 92 push r15
7a8: 0f 93 push r16
7aa: 1f 93 push r17
register unsigned char contrast;
// copy the bitmap from flash to memory
memcpy_P(display, boot_logo, sizeof(display));
7ac: 0c ec ldi r16, 0xCC ; 204
7ae: 10 e0 ldi r17, 0x00 ; 0
7b0: 81 e0 ldi r24, 0x01 ; 1
7b2: e8 2e mov r14, r24
7b4: 82 e0 ldi r24, 0x02 ; 2
7b6: f8 2e mov r15, r24
7b8: 40 e0 ldi r20, 0x00 ; 0
7ba: 54 e0 ldi r21, 0x04 ; 4
7bc: b8 01 movw r22, r16
7be: c7 01 movw r24, r14
7c0: 0e 94 f5 03 call 0x7ea ; 0x7ea <memcpy_P>
// Reset the LCD
ResetLCD();
7c4: 0e 94 35 03 call 0x66a ; 0x66a <ResetLCD>
//Start the timers.
Initialize_And_Start_Timer_0_LCD_Contrast_PWM();
7c8: 0e 94 51 03 call 0x6a2 ; 0x6a2 <Initialize_And_Start_Timer_0_LCD_Contrast_PWM>
// Initializes the LCD, also takes LCD out of reset
InitializeLCD();
7cc: 0e 94 3b 03 call 0x676 ; 0x676 <InitializeLCD>
// Copies from the array in flash to RAM
memcpy_P(display, boot_logo, sizeof(display));
7d0: 40 e0 ldi r20, 0x00 ; 0
7d2: 54 e0 ldi r21, 0x04 ; 4
7d4: b8 01 movw r22, r16
7d6: c7 01 movw r24, r14
7d8: 0e 94 f5 03 call 0x7ea ; 0x7ea <memcpy_P>
PORTG = 0b11111111;
}
//============================================================================
void update_contrast(unsigned char contrast)
{
OCR0A = ((unsigned short)contrast * 255) / 100;
7dc: 8a e3 ldi r24, 0x3A ; 58
7de: 87 bd out 0x27, r24 ; 39
contrast = 23;
update_contrast(contrast);
// Backlight is Port D, Pin 3, on by default. You can change this in utils.h
}
7e0: 1f 91 pop r17
7e2: 0f 91 pop r16
7e4: ff 90 pop r15
7e6: ef 90 pop r14
7e8: 08 95 ret
000007ea <memcpy_P>:
7ea: fb 01 movw r30, r22
7ec: dc 01 movw r26, r24
7ee: 02 c0 rjmp .+4 ; 0x7f4 <memcpy_P+0xa>
7f0: 05 90 lpm r0, Z+
7f2: 0d 92 st X+, r0
7f4: 41 50 subi r20, 0x01 ; 1
7f6: 50 40 sbci r21, 0x00 ; 0
7f8: d8 f7 brcc .-10 ; 0x7f0 <memcpy_P+0x6>
7fa: 08 95 ret
000007fc <memset>:
7fc: dc 01 movw r26, r24
7fe: 01 c0 rjmp .+2 ; 0x802 <memset+0x6>
800: 6d 93 st X+, r22
802: 41 50 subi r20, 0x01 ; 1
804: 50 40 sbci r21, 0x00 ; 0
806: e0 f7 brcc .-8 ; 0x800 <memset+0x4>
808: 08 95 ret
0000080a <__udivmodhi4>:
80a: aa 1b sub r26, r26
80c: bb 1b sub r27, r27
80e: 51 e1 ldi r21, 0x11 ; 17
810: 07 c0 rjmp .+14 ; 0x820 <__udivmodhi4_ep>
00000812 <__udivmodhi4_loop>:
812: aa 1f adc r26, r26
814: bb 1f adc r27, r27
816: a6 17 cp r26, r22
818: b7 07 cpc r27, r23
81a: 10 f0 brcs .+4 ; 0x820 <__udivmodhi4_ep>
81c: a6 1b sub r26, r22
81e: b7 0b sbc r27, r23
00000820 <__udivmodhi4_ep>:
820: 88 1f adc r24, r24
822: 99 1f adc r25, r25
824: 5a 95 dec r21
826: a9 f7 brne .-22 ; 0x812 <__udivmodhi4_loop>
828: 80 95 com r24
82a: 90 95 com r25
82c: bc 01 movw r22, r24
82e: cd 01 movw r24, r26
830: 08 95 ret
00000832 <_exit>:
832: f8 94 cli
00000834 <__stop_program>:
834: ff cf rjmp .-2 ; 0x834 <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -