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

📄 project.lst

📁 AVR单片机 C语言程序设计经典实用
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    060C E5CF      LDI	R28,0x5F
    060D E0D4      LDI	R29,4
    060E BFCD      OUT	0x3D,R28
    060F BFDE      OUT	0x3E,R29
    0610 51C0      SUBI	R28,0x10
    0611 40D0      SBCI	R29,0
    0612 EA0A      LDI	R16,0xAA
    0613 8308      STD	Y+0,R16
    0614 2400      CLR	R0
    0615 E6E4      LDI	R30,0x64
    0616 E0F0      LDI	R31,0
    0617 E010      LDI	R17,0
    0618 36E4      CPI	R30,0x64
    0619 07F1      CPC	R31,R17
    061A F011      BEQ	0x061D
    061B 9201      ST	R0,Z+
    061C CFFB      RJMP	0x0618
    061D 8300      STD	Z+0,R16
    061E E1E4      LDI	R30,0x14
    061F E0FC      LDI	R31,0xC
    0620 E6A0      LDI	R26,0x60
    0621 E0B0      LDI	R27,0
    0622 E01C      LDI	R17,0xC
    0623 31E8      CPI	R30,0x18
    0624 07F1      CPC	R31,R17
    0625 F021      BEQ	0x062A
    0626 95C8      LPM
    0627 9631      ADIW	R30,1
    0628 920D      ST	R0,X+
    0629 CFF9      RJMP	0x0623
    062A 940E07EF  CALL	_main
_exit:
    062C CFFF      RJMP	_exit
FILE: E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\app.c
(0001) //***************************************************************
(0002) // File Name : Gpio.c
(0003) // Author    : Steaven
(0004) // Created   : 2008-06-09
(0005) // Modified  : 
(0006) // Revision  : V0.0
(0007) //***************************************************************
(0008) 
(0009) #include "iom16v.h" 
(0010) #include "DataType.h"
(0011) #include "app.h"
(0012) 
(0013) //local function declaration
(0014) void Gpio_Init(void);
(0015) void Timer0_Init(void);
(0016) void Interrupt_Init(void);
(0017) 
(0018) //***************************************************************
(0019) // Function    : Hardware_Init
(0020) // Input       : none
(0021) // Output      : none
(0022) // Description : ATmega16 Hardware Initialization
(0023) //***************************************************************
(0024) void Hardware_Init(void)
(0025) {
(0026) 	Gpio_Init();
_Hardware_Init:
    062D D002      RCALL	_Gpio_Init
(0027)     Timer0_Init();
    062E D00F      RCALL	_Timer0_Init
(0028) 	Interrupt_Init();
(0029) }
    062F C01B      RJMP	_Interrupt_Init
(0030) 
(0031) //***************************************************************
(0032) // Function    : Gpio_Init
(0033) // Input       : none
(0034) // Output      : none
(0035) // Description : ATmega16 GPIO Initialization
(0036) //***************************************************************
(0037) void Gpio_Init(void)
(0038) {
(0039)     DDRA  = 0xFF; //PortA - Output
_Gpio_Init:
    0630 EF8F      LDI	R24,0xFF
    0631 BB8A      OUT	0x1A,R24
(0040)     PORTA = 0x00; //Output all 0
    0632 2422      CLR	R2
    0633 BA2B      OUT	0x1B,R2
(0041)     DDRB  = 0x0F; //PortB - PB[7:4]/Input,PB[3:0]/Output
    0634 E08F      LDI	R24,0xF
    0635 BB87      OUT	0x17,R24
(0042)     PORTB = 0xF0; //PB[7:4]/Input with pull-up,PB[3:0]/Output all 0
    0636 EF80      LDI	R24,0xF0
    0637 BB88      OUT	0x18,R24
(0043)     DDRC  = 0xFF; //PortC - Output
    0638 EF8F      LDI	R24,0xFF
    0639 BB84      OUT	0x14,R24
(0044)     PORTC = 0x00; //Output all 0
    063A BA25      OUT	0x15,R2
(0045)     DDRD  = 0xFF; //PortD - Output
    063B BB81      OUT	0x11,R24
(0046)     PORTD = 0x00; //Output all 0
    063C BA22      OUT	0x12,R2
(0047) }
    063D 9508      RET
(0048) 
(0049) //***************************************************************
(0050) // Function    : Timer0_Init
(0051) // Input       : none
(0052) // Output      : none
(0053) // Description : ATmega16 Timer0 Initialization,10ms Interval
(0054) //***************************************************************
(0055) void Timer0_Init(void)
(0056) {
(0057) 	TCCR0 = 0x0D;   //1024 division,8M/1024,CTC Mode
_Timer0_Init:
    063E E08D      LDI	R24,0xD
    063F BF83      OUT	0x33,R24
(0058) 	TCNT0 = 0x00;   //Clear Counter
    0640 2422      CLR	R2
    0641 BE22      OUT	0x32,R2
(0059) 	OCR0  = 78;     //78 * 1024/8M = 10ms 
    0642 E48E      LDI	R24,0x4E
    0643 BF8C      OUT	0x3C,R24
(0060) 	TIMSK |= 0x02;  //Enable OCIE0
    0644 B789      IN	R24,0x39
    0645 6082      ORI	R24,2
    0646 BF89      OUT	0x39,R24
(0061) 	TIFR  |= 0x02;  //Clear OCIF0
    0647 B788      IN	R24,0x38
    0648 6082      ORI	R24,2
    0649 BF88      OUT	0x38,R24
(0062) }
    064A 9508      RET
(0063) 
(0064) //***************************************************************
(0065) // Function    : Interrupt_Init
(0066) // Input       : none
(0067) // Output      : none
(0068) // Description : ATmega16 Interrupt Initialization
(0069) //***************************************************************
(0070) void Interrupt_Init(void)
(0071) {
(0072) 	SREG |= 0x80;   //Enable Global Interrupt
_Interrupt_Init:
    064B 9478      BSET	7
(0073) }
    064C 9508      RET
(0074) 
(0075) //***************************************************************
(0076) // Function    : Buzzer_ON/OFF
(0077) // Input       : none
(0078) // Output      : none
(0079) // Description : Buzzer ON/OFF Control
(0080) //***************************************************************
(0081) void Buzzer_ON(void)
(0082) {
(0083) 	PORTB |= 0x08;
_Buzzer_ON:
    064D 9AC3      SBI	0x18,3
(0084) }
    064E 9508      RET
(0085) 
(0086) void Buzzer_OFF(void)
(0087) {
(0088) 	PORTB &= ~0x08;
_Buzzer_OFF:
    064F 98C3      CBI	0x18,3
(0089) }
    0650 9508      RET
FILE: E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\点阵型LCD显示应用设计\LCD.c
(0001) //******************************************************************************
(0002) // File Name : LCD.c
(0003) // Author    : Steaven
(0004) // Created   : 2008-07-27
(0005) // Modified  : 
(0006) // Revision  : V0.0
(0007) //******************************************************************************
(0008) 
(0009) //PIN DESCRIPTION
(0010) //01  2   3  4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20
(0011) //GND VCC V0 RS  RW  EN  D0  D1  D2  D3  D4  D5  D6  D7  CS1 CS2 RST VEE BLA BLK
(0012) //GND +5V V0 PB0 PB1 PB2 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PC6 PC5 PC7 VEE +5V GND
(0013) 
(0014) #include "iom16v.h" 
(0015) #include "DataType.h"
(0016) #include "LCD.h"
(0017) #include "macros.h" 
(0018) 
(0019) #define cLCD_X_MAX   64
(0020) #define cLCD_Y_MAX  128
(0021) 
(0022) //local functions declaration
(0023) void Set_DI(INT8U RS);
(0024) void Set_RW(INT8U RW);
(0025) void Set_EN(INT8U EN);
(0026) void Set_CS1(INT8U CS1);
(0027) void Set_CS2(INT8U CS2);
(0028) void Set_RST(INT8U RST);
(0029) void Set_Data(INT8U data);
(0030) void LCD_Command_DispOnOff(INT8U onoff);
(0031) void LCD_Command_SetStartLine(INT8U startline);
(0032) void LCD_Command_Set_X(INT8U x);
(0033) void LCD_Command_Set_Y(INT8U y);
(0034) void LCD_Command_WriteByte(INT8U data);
(0035) void LCD_Reset(void);
(0036) void LCD_Clear_Line(INT8U wStartLine,INT8U wEndLine);
(0037) void LCD_Init(void);
(0038) void WriteWord(INT8U const *disp,INT8U x,INT8U y);
(0039) void WriteCharacter(const INT8U *disp,INT8U x,INT8U y,INT8U cs);
(0040) void WritePIC(const INT8U *disp);
(0041) void LCD_Write_Char(INT8U y,INT8U x,const INT8U *pdata);
(0042) void LCD_Write_Dot(INT8U x,INT8U y);
(0043) void LCD_Write_Data(INT8U x,INT8U y,INT8U data);	
(0044) void LCD_Write_Picture(INT8U x1,INT8U y1,INT8U x2,INT8U y2,const INT8U *pdata);
(0045) 
(0046) //******************************************************************************
(0047) // Function    : Set_RS
(0048) // Input       : RS - RS Control Line Level
(0049) // Output      : none
(0050) // Description : LCD(1602) Low Level Interface Function
(0051) //******************************************************************************
(0052) void Set_DI(INT8U RS)
(0053) {
(0054) 	if(RS == 0)
_Set_DI:
  RS                   --> R16
    0651 2300      TST	R16
    0652 F411      BNE	0x0655
(0055) 	{
(0056) 		PORTB &= ~0x01;
    0653 98C0      CBI	0x18,0
(0057) 	}
    0654 C001      RJMP	0x0656
(0058) 	else
(0059) 	{
(0060) 		PORTB |= 0x01;
    0655 9AC0      SBI	0x18,0
(0061) 	}
(0062) }
    0656 9508      RET
(0063) 
(0064) //******************************************************************************
(0065) // Function    : Set_RW
(0066) // Input       : RW - RW Control Line Level
(0067) // Output      : none
(0068) // Description : Low Level Interface Function
(0069) //******************************************************************************
(0070) void Set_RW(INT8U RW)
(0071) {
(0072) 	if(RW == 0)
_Set_RW:
  RW                   --> R16
    0657 2300      TST	R16
    0658 F411      BNE	0x065B
(0073) 	{
(0074) 		PORTB &= ~0x02;
    0659 98C1      CBI	0x18,1
(0075) 	}
    065A C001      RJMP	0x065C
(0076) 	else
(0077) 	{
(0078) 		PORTB |= 0x02;
    065B 9AC1      SBI	0x18,1
(0079) 	}
(0080) }
    065C 9508      RET
(0081) 
(0082) //******************************************************************************
(0083) // Function    : Set_EN
(0084) // Input       : RW - RW Control Line Level
(0085) // Output      : none
(0086) // Description : Low Level Interface Function
(0087) //******************************************************************************
(0088) void Set_EN(INT8U EN)
(0089) {
(0090) 	if(EN == 0)
_Set_EN:
  EN                   --> R16
    065D 2300      TST	R16
    065E F411      BNE	0x0661
(0091) 	{
(0092) 		PORTB &= ~0x04;
    065F 98C2      CBI	0x18,2
(0093) 	}
    0660 C001      RJMP	0x0662
(0094) 	else
(0095) 	{
(0096) 		PORTB |= 0x04;
    0661 9AC2      SBI	0x18,2
(0097) 	}
(0098) }
    0662 9508      RET
(0099) 
(0100) //******************************************************************************
(0101) // Function    : Set_CS2
(0102) // Input       : CS2 - CS2 Control Line Level
(0103) // Output      : none
(0104) // Description : Low Level Interface Function
(0105) //******************************************************************************
(0106) void Set_CS2(INT8U CS2)
(0107) {
(0108) 	if(CS2 == 0) 
_Set_CS2:
  CS2                  --> R16
    0663 2300      TST	R16
    0664 F411      BNE	0x0667
(0109) 	{
(0110) 		PORTC &= ~0x20;
    0665 98AD      CBI	0x15,5
(0111) 	}
    0666 C001      RJMP	0x0668
(0112)  	else
(0113)  	{
(0114)  		PORTC |= 0x20;
    0667 9AAD      SBI	0x15,5
(0115)  	}
(0116) }
    0668 9508      RET
(0117) 
(0118) //******************************************************************************
(0119) // Function    : Set_CS1
(0120) // Input       : CS1 - CS1 Control Line Level
(0121) // Output      : none
(0122) // Description : Low Level Interface Function
(0123) //******************************************************************************
(0124) void Set_CS1(INT8U CS1)
(0125) {
(0126) 	if(CS1 == 0)
_Set_CS1:
  CS1                  --> R16
    0669 2300      TST	R16
    066A F411      BNE	0x066D
(0127) 	{
(0128) 		PORTC &= ~0x40;
    066B 98AE      CBI	0x15,6
(0129) 	}
    066C C001      RJMP	0x066E
(0130) 	else
(0131) 	{
(0132) 		PORTC |= 0x40;
    066D 9AAE      SBI	0x15,6
(0133) 	}
(0134) }
    066E 9508      RET
(0135) 
(0136) 
(0137) //******************************************************************************
(0138) // Function    : Set_CS1
(0139) // Input       : CS1 - CS1 Control Line Level
(0140) // Output      : none
(0141) // Description : Low Level Interface Function
(0142) //******************************************************************************
(0143) void Set_RST(INT8U RST)
(0144) {
(0145) 	if(RST == 0)
_Set_RST:
  RST                  --> R16
    066F 2300      TST	R16
    0670 F411      BNE	0x0673
(0146) 	{
(0147) 		PORTC &= ~0x80;
    0671 98AF      CBI	0x15,7
(0148) 	}
    0672 C001      RJMP	0x0674
(0149) 	else
(0150) 	{
(0151) 		PORTC |= 0x80;
    0673 9AAF      SBI	0x15,7
(0152) 	}
(0153) }
    0674 9508      RET
(0154)  
(0155) //******************************************************************************
(0156) // Function    : Set_Data
(0157) // Input       : data - Data Line Level
(0158) // Output      : none
(0159) // Description : Low Level Interface Function
(0160) //******************************************************************************
(0161) void Set_Data(INT8U data)
(0162) {
(0163) 	PORTA  = data;
_Set_Data:
  data                 --> R16

⌨️ 快捷键说明

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