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

📄 project.lst

📁 AVR单片机 C语言程序设计经典实用
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    05C0 E5CF      LDI	R28,0x5F
    05C1 E0D4      LDI	R29,4
    05C2 BFCD      OUT	0x3D,R28
    05C3 BFDE      OUT	0x3E,R29
    05C4 51C0      SUBI	R28,0x10
    05C5 40D0      SBCI	R29,0
    05C6 EA0A      LDI	R16,0xAA
    05C7 8308      STD	Y+0,R16
    05C8 2400      CLR	R0
    05C9 E0EA      LDI	R30,0xA
    05CA E0F1      LDI	R31,1
    05CB E011      LDI	R17,1
    05CC 33E8      CPI	R30,0x38
    05CD 07F1      CPC	R31,R17
    05CE F011      BEQ	0x05D1
    05CF 9201      ST	R0,Z+
    05D0 CFFB      RJMP	0x05CC
    05D1 8300      STD	Z+0,R16
    05D2 EDE5      LDI	R30,0xD5
    05D3 E0FA      LDI	R31,0xA
    05D4 E6A0      LDI	R26,0x60
    05D5 E0B0      LDI	R27,0
    05D6 E01B      LDI	R17,0xB
    05D7 37EF      CPI	R30,0x7F
    05D8 07F1      CPC	R31,R17
    05D9 F021      BEQ	0x05DE
    05DA 95C8      LPM
    05DB 9631      ADIW	R30,1
    05DC 920D      ST	R0,X+
    05DD CFF9      RJMP	0x05D7
    05DE 940E0CBC  CALL	_main
_exit:
    05E0 CFFF      RJMP	_exit
FILE: E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\initial.c
(0001) //***************************************************************
(0002) // File Name : initial.c
(0003) // Author    : Steaven
(0004) // Created   : 2008-06-09
(0005) // Modified  : 
(0006) // Revision  : V0.0
(0007) //***************************************************************
(0008) 
(0009) #include "app.h"
(0010) 
(0011) //local function(s) declaration
(0012) void Gpio_Init(void);
(0013) void Timer2_Init(void);
(0014) void Interrupt_Init(void);
(0015) 
(0016) //***************************************************************
(0017) // Function    : Hardware_Init
(0018) // Input       : none
(0019) // Output      : none
(0020) // Description : ATmega16 Hardware Initialization
(0021) //***************************************************************
(0022) void Hardware_Init(void)
(0023) {
(0024)     Gpio_Init();
_Hardware_Init:
    05E1 D002      RCALL	_Gpio_Init
(0025)     Timer2_Init();
    05E2 D00F      RCALL	_Timer2_Init
(0026)     Interrupt_Init();
(0027) }
    05E3 C01C      RJMP	_Interrupt_Init
(0028) 
(0029) //***************************************************************
(0030) // Function    : Gpio_Init
(0031) // Input       : none
(0032) // Output      : none
(0033) // Description : ATmega16 GPIO Initialization
(0034) //***************************************************************
(0035) void Gpio_Init(void)
(0036) {
(0037) 	DDRA  = 0xFF;
_Gpio_Init:
    05E4 EF8F      LDI	R24,0xFF
    05E5 BB8A      OUT	0x1A,R24
(0038) 	PORTA = 0x00; 
    05E6 2422      CLR	R2
    05E7 BA2B      OUT	0x1B,R2
(0039) 	DDRB  = 0x0F;
    05E8 E08F      LDI	R24,0xF
    05E9 BB87      OUT	0x17,R24
(0040) 	PORTB = 0xF0;
    05EA EF80      LDI	R24,0xF0
    05EB BB88      OUT	0x18,R24
(0041) 	DDRC  = 0xFF;
    05EC EF8F      LDI	R24,0xFF
    05ED BB84      OUT	0x14,R24
(0042) 	PORTC = 0x00;
    05EE BA25      OUT	0x15,R2
(0043) 	DDRD  = 0xFF;
    05EF BB81      OUT	0x11,R24
(0044) 	PORTD = 0x00;
    05F0 BA22      OUT	0x12,R2
(0045) }
    05F1 9508      RET
(0046) 
(0047) //***************************************************************
(0048) // Function    : Timer_Init
(0049) // Input       : none
(0050) // Output      : none
(0051) // Description : ATmega16 Timer Initialization
(0052) //***************************************************************
(0053) void Timer2_Init(void)
(0054) {
(0055) 	ASSR  = 0x00;   //Timer2 clocked by sys clk
_Timer2_Init:
    05F2 2422      CLR	R2
    05F3 BC22      OUT	0x22,R2
(0056) 	TCCR2 = 0x47;   //1024 division,8M/1024,CTC Mode
    05F4 E487      LDI	R24,0x47
    05F5 BD85      OUT	0x25,R24
(0057) 	TCNT2 = 0x00;   //Clear Counter
    05F6 BC24      OUT	0x24,R2
(0058) 	OCR2  = 78;     //78 * 1024/8M = 10ms 
    05F7 E48E      LDI	R24,0x4E
    05F8 BD83      OUT	0x23,R24
(0059) 	TIMSK |= 0x80;  //Enable OCIE2
    05F9 B789      IN	R24,0x39
    05FA 6880      ORI	R24,0x80
    05FB BF89      OUT	0x39,R24
(0060) 	TIFR  |= 0x80;  //Clear OCIF2
    05FC B788      IN	R24,0x38
    05FD 6880      ORI	R24,0x80
    05FE BF88      OUT	0x38,R24
(0061) }
    05FF 9508      RET
(0062) 
(0063) //***************************************************************
(0064) // Function    : Interrupt_Init
(0065) // Input       : none
(0066) // Output      : none
(0067) // Description : ATmega16 Interrupt Initialization
(0068) //***************************************************************
(0069) void Interrupt_Init(void)
(0070) {
(0071) 	SREG |= 0x80;   //Enable Global Interrupt
_Interrupt_Init:
    0600 9478      BSET	7
(0072) }
    0601 9508      RET
FILE: E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\interrupt.c
(0001) //***************************************************************
(0002) // File Name : Interrupt.c
(0003) // Author    : Steaven
(0004) // Created   : 2008-06-09
(0005) // Modified  : 
(0006) // Revision  : V0.0
(0007) //***************************************************************
(0008) 
(0009) #include "app.h"
(0010) 
(0011) //global variables definition
(0012) INT8U bYear;    //time - year
(0013) INT8U bMonth;   //time - month
(0014) INT8U bDate;    //time - date
(0015) INT8U bHour;    //time - hour
(0016) INT8U bMinute;  //time - minute
(0017) INT8U bSecond;  //time - second
(0018) 
(0019) //***************************************************************
(0020) // Function    : sInit_Calendar
(0021) // Input       : none
(0022) // Output      : none
(0023) // Description : Time Initialization,2008-10-29,23:40:45
(0024) //***************************************************************
(0025) void sInit_Calendar(void)
(0026) {
(0027) 	bYear = 0x08;
_sInit_Calendar:
    0602 E088      LDI	R24,0x8
    0603 9380010F  STS	_bYear,R24
(0028) 	bMonth = 10;
    0605 E08A      LDI	R24,0xA
    0606 9380010E  STS	_bMonth,R24
(0029) 	bDate = 29;
    0608 E18D      LDI	R24,0x1D
    0609 9380010D  STS	_bDate,R24
(0030) 	bHour = 23;
    060B E187      LDI	R24,0x17
    060C 9380010C  STS	_bHour,R24
(0031) 	bMinute = 40;
    060E E288      LDI	R24,0x28
    060F 9380010B  STS	_bMinute,R24
(0032) 	bSecond = 45;
    0611 E28D      LDI	R24,0x2D
    0612 9380010A  STS	_bSecond,R24
(0033) }
    0614 9508      RET
(0034) 
(0035) //***************************************************************
(0036) // Function    : Calendar_Update
(0037) // Input       : none
(0038) // Output      : none
(0039) // Description : Update time every one second
(0040) //***************************************************************
(0041) void Calendar_Update(void)
(0042) {	
(0043)   	bSecond++; 	
_Calendar_Update:
    0615 9180010A  LDS	R24,_bSecond
    0617 5F8F      SUBI	R24,0xFF
    0618 9380010A  STS	_bSecond,R24
(0044)  	if(bSecond >= 60)
    061A 338C      CPI	R24,0x3C
    061B F408      BCC	0x061D
    061C C086      RJMP	0x06A3
(0045)   	{
(0046) 		bSecond = 0;	  		
    061D 2422      CLR	R2
    061E 9220010A  STS	_bSecond,R2
(0047) 		bMinute++;		
    0620 9180010B  LDS	R24,_bMinute
    0622 5F8F      SUBI	R24,0xFF
    0623 9380010B  STS	_bMinute,R24
(0048) 		if(bMinute >= 60)
    0625 338C      CPI	R24,0x3C
    0626 F408      BCC	0x0628
    0627 C07B      RJMP	0x06A3
(0049) 	  	{
(0050)    		 	bMinute = 0;
    0628 9220010B  STS	_bMinute,R2
(0051) 	 		bHour++;
    062A 9180010C  LDS	R24,_bHour
    062C 5F8F      SUBI	R24,0xFF
    062D 9380010C  STS	_bHour,R24
(0052) 		  	if(bHour >= 24)
    062F 3188      CPI	R24,0x18
    0630 F408      BCC	0x0632
    0631 C071      RJMP	0x06A3
(0053) 		  	{
(0054) 				bHour = 0;
    0632 9220010C  STS	_bHour,R2
(0055) 				bDate++;		
    0634 9180010D  LDS	R24,_bDate
    0636 5F8F      SUBI	R24,0xFF
    0637 9380010D  STS	_bDate,R24
(0056) 				if((bMonth == 4) || (bMonth == 6) || \
    0639 9180010E  LDS	R24,_bMonth
    063B 3084      CPI	R24,4
    063C F031      BEQ	0x0643
    063D 3086      CPI	R24,6
    063E F021      BEQ	0x0643
    063F 3089      CPI	R24,0x9
    0640 F011      BEQ	0x0643
    0641 308B      CPI	R24,0xB
    0642 F479      BNE	0x0652
(0057) 				   (bMonth == 9) || (bMonth == 11))
(0058) 				{
(0059) 					if(bDate > 30)
    0643 E18E      LDI	R24,0x1E
    0644 9020010D  LDS	R2,_bDate
    0646 1582      CP	R24,R2
    0647 F008      BCS	0x0649
    0648 C04D      RJMP	0x0696
(0060) 					{
(0061) 						bDate = 1;
    0649 E081      LDI	R24,1
    064A 9380010D  STS	_bDate,R24
(0062) 						bMonth++;
    064C 9180010E  LDS	R24,_bMonth
    064E 5F8F      SUBI	R24,0xFF
    064F 9380010E  STS	_bMonth,R24
(0063) 					}
(0064) 				}
    0651 C044      RJMP	0x0696
(0065) 				else if((bMonth == 1) || (bMonth == 3)  || \
    0652 9180010E  LDS	R24,_bMonth
    0654 3081      CPI	R24,1
    0655 F061      BEQ	0x0662
    0656 3083      CPI	R24,3
    0657 F051      BEQ	0x0662
    0658 3085      CPI	R24,5
    0659 F041      BEQ	0x0662
    065A 3087      CPI	R24,7
    065B F031      BEQ	0x0662
    065C 3088      CPI	R24,0x8
    065D F021      BEQ	0x0662
    065E 308A      CPI	R24,0xA
    065F F011      BEQ	0x0662
    0660 308C      CPI	R24,0xC
    0661 F471      BNE	0x0670
(0066) 					    (bMonth == 5) || (bMonth == 7)  || \
(0067) 					    (bMonth == 8) || (bMonth == 10) || \
(0068) 					    (bMonth == 12))
(0069) 				{
(0070) 					if(bDate > 31)
    0662 E18F      LDI	R24,0x1F
    0663 9020010D  LDS	R2,_bDate
    0665 1582      CP	R24,R2
    0666 F578      BCC	0x0696
(0071) 					{
(0072) 						bDate = 1;
    0667 E081      LDI	R24,1
    0668 9380010D  STS	_bDate,R24
(0073) 						bMonth++;
    066A 9180010E  LDS	R24,_bMonth
    066C 5F8F      SUBI	R24,0xFF
    066D 9380010E  STS	_bMonth,R24
(0074) 					}
(0075) 				}
    066F C026      RJMP	0x0696
(0076) 				else if(bMonth == 2)
    0670 9180010E  LDS	R24,_bMonth
    0672 3082      CPI	R24,2
    0673 F511      BNE	0x0696
(0077) 				{
(0078) 					if(bDate > 28)
    0674 E18C      LDI	R24,0x1C
    0675 9020010D  LDS	R2,_bDate
    0677 1582      CP	R24,R2
    0678 F4E8      BCC	0x0696
(0079) 					{
(0080) 						if((bYear % 4) != 0)
    0679 E014      LDI	R17,4
    067A 9100010F  LDS	R16,_bYear
    067C 940E0E18  CALL	mod8u
    067E 2300      TST	R16
    067F F049      BEQ	0x0689
(0081) 						{
(0082) 							bDate = 1;
    0680 E081      LDI	R24,1
    0681 9380010D  STS	_bDate,R24
(0083) 							bMonth++;
    0683 9180010E  LDS	R24,_bMonth
    0685 5F8F      SUBI	R24,0xFF
    0686 9380010E  STS	_bMonth,R24
(0084) 						}
    0688 C00D      RJMP	0x0696
(0085) 						else
(0086) 						{
(0087) 							if(bDate > 29)
    0689 E18D      LDI	R24,0x1D
    068A 9020010D  LDS	R2,_bDate
    068C 1582      CP	R24,R2
    068D F440      BCC	0x0696
(0088) 							{
(0089) 								bDate = 1;
    068E E081      LDI	R24,1
    068F 9380010D  STS	_bDate,R24
(0090) 								bMonth++;
    0691 9180010E  LDS	R24,_bMonth
    0693 5F8F      SUBI	R24,0xFF
    0694 9380010E  STS	_bMonth,R24
(0091) 							}
(0092) 						}
(0093) 					}
(0094) 				}
(0095) 				if(bMonth > 12)
    0696 E08C      LDI	R24,0xC
    0697 9020010E  LDS	R2,_bMonth
    0699 1582      CP	R24,R2
    069A F440      BCC	0x06A3
(0096) 				{
(0097) 					bMonth = 1;
    069B E081      LDI	R24,1
    069C 9380010E  STS	_bMonth,R24
(0098) 					bYear++;
    069E 9180010F  LDS	R24,_bYear
    06A0 5F8F      SUBI	R24,0xFF
    06A1 9380010F  STS	_bYear,R24
(0099) 				}
(0100) 			}
(0101)   		}
(0102)   	}
(0103) }
    06A3 9508      RET
_Timer2_Interrupt:
    06A4 940E0E79  CALL	push_lset
(0104) 
(0105) //***************************************************************
(0106) // Function    : Timer2_Interrupt
(0107) // Input       : none
(0108) // Output      : none
(0109) // Description : Kernel Clock Interrupt Service Routine
(0110) //***************************************************************
(0111) #pragma interrupt_handler Timer2_Interrupt:4
(0112) void Timer2_Interrupt(void)
(0113) {
(0114) 	//Clear Timer2 OCIF Flag
(0115) 	TIFR  |= 0x80;
    06A6 B788      IN	R24,0x38
    06A7 6880      ORI	R24,0x80
    06A8 BF88      OUT	0x38,R24
(0116)     TCNT2 = 0x00;
    06A9 2422      CLR	R2
    06AA BC24      OUT	0x24,R2
(0117) 	//Update Task Status
(0118) 	OS_Task_Update();
    06AB 940E071A  CALL	_OS_Task_Update
(0119) }
    06AD 940E0E90  CALL	pop_lset
    06AF 9518      RETI
_OS_Event_Pend:
  wTaskEvent           --> R20
  bTaskPrio            --> R16
    06B0 940E0E49  CALL	push_gset1
FILE: E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Kernel.c
(0001) //******************************************************************************
(0002) // File Name : Kernel.c
(0003) // Author    : Steaven
(0004) // Created   : 2008-06-09

⌨️ 快捷键说明

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