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

📄 main.lst

📁 用AVR单片机mega16控制TEA5756收音机芯片的程序。
💻 LST
📖 第 1 页 / 共 5 页
字号:
 689 001c 94E0      		ldi r25,hi8(1139)
 690               	.L13:
  19:delay_function.C ****    unsigned int i;
  20:delay_function.C ****    for (i=0;i<1140;i++);
 692               	.LM8:
 693 001e CC97      		sbiw r24,60
 694 0020 97FF      		sbrs r25,7
 695 0022 FDCF      		rjmp .L13
 696               	/* epilogue: frame size=0 */
 697 0024 0895      		ret
 698               	/* epilogue end (size=1) */
 699               	/* function delay_1ms size 6 (5) */
 704               	.global	delay_nms
 706               	delay_nms:
  21:delay_function.C ****   }
  22:delay_function.C ****   
  23:delay_function.C **** void delay_nms(unsigned int n)       //N ms延时函数
  24:delay_function.C ****   {
 708               	.LM9:
 709               	/* prologue: frame size=0 */
 710 0026 CF93      		push r28
 711 0028 DF93      		push r29
 712               	/* prologue end (size=2) */
  25:delay_function.C ****    unsigned int i=0;
  26:delay_function.C ****    for (i=0;i<n;i++)
 714               	.LM10:
 715 002a 0097      		sbiw r24,0
 716 002c 21F0      		breq .L142
 717 002e EC01      		movw r28,r24
 718               	.L140:
  27:delay_function.C ****    delay_1ms();
 720               	.LM11:
 721 0030 F4DF      		rcall delay_1ms
 723               	.LM12:
 724 0032 2197      		sbiw r28,1
 725 0034 E9F7      		brne .L140
 726               	.L142:
 727               	/* epilogue: frame size=0 */
 728 0036 DF91      		pop r29
 729 0038 CF91      		pop r28
 730 003a 0895      		ret
 731               	/* epilogue end (size=3) */
 732               	/* function delay_nms size 12 (7) */
 738               	.global	LCD_write_byte
 740               	LCD_write_byte:
 742               	.Ltext2:
   1:3310LCD_function.c **** 
   2:3310LCD_function.c **** 
   3:3310LCD_function.c **** 
   4:3310LCD_function.c **** 
   5:3310LCD_function.c **** #include <avr/io.h>
   6:3310LCD_function.c **** 
   7:3310LCD_function.c **** #include "english_6x8_pixel.h"
   8:3310LCD_function.c **** #include "delay_function.C"
   9:3310LCD_function.c **** 
  10:3310LCD_function.c **** //  Mega48/8  port B pinout for LCD.
  11:3310LCD_function.c **** #define LCD_DC                 0x01  //  PB0
  12:3310LCD_function.c **** #define LCD_CE                 0x04  //  PB2
  13:3310LCD_function.c **** #define SPI_MOSI               0x08  //  PB3
  14:3310LCD_function.c **** #define LCD_RST                0x10  //  PB4
  15:3310LCD_function.c **** #define SPI_CLK                0x20  //  PB5
  16:3310LCD_function.c **** 
  17:3310LCD_function.c **** void LCD_init(void);
  18:3310LCD_function.c **** 
  19:3310LCD_function.c **** void LCD_clear(void);
  20:3310LCD_function.c **** 
  21:3310LCD_function.c **** void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);
  22:3310LCD_function.c **** 
  23:3310LCD_function.c **** void LCD_write_chinese_string(unsigned char X, unsigned char Y,
  24:3310LCD_function.c ****                    unsigned char ch_with,unsigned char num,
  25:3310LCD_function.c ****                    unsigned char line,unsigned char row);                 
  26:3310LCD_function.c **** 
  27:3310LCD_function.c **** void LCD_write_char(unsigned char c);
  28:3310LCD_function.c **** 
  29:3310LCD_function.c **** void LCD_write_byte(unsigned char data, unsigned char dc);
  30:3310LCD_function.c **** 
  31:3310LCD_function.c **** void delay_1us(void);                 
  32:3310LCD_function.c **** void delay_nus(unsigned int n);      
  33:3310LCD_function.c **** void delay_1ms(void);                
  34:3310LCD_function.c **** void delay_nms(unsigned int n);     
  35:3310LCD_function.c **** /*-----------------------------------------------------------------------
  36:3310LCD_function.c **** LCD_init          : 3310LCD初始化
  37:3310LCD_function.c **** 
  38:3310LCD_function.c **** 编写日期          :2004-8-10 
  39:3310LCD_function.c **** 最后修改日期      :2004-8-10 
  40:3310LCD_function.c **** -----------------------------------------------------------------------*/
  41:3310LCD_function.c **** void LCD_init(void)
  42:3310LCD_function.c ****   {
  43:3310LCD_function.c ****     PORTB &= ~LCD_RST;          // 产生一个让LCD复位的低电平脉冲
  44:3310LCD_function.c ****     delay_1us();
  45:3310LCD_function.c ****     PORTB |= LCD_RST;
  46:3310LCD_function.c ****     
  47:3310LCD_function.c ****     PORTB &= ~LCD_CE ;		// 关闭LCD
  48:3310LCD_function.c ****     delay_1us();
  49:3310LCD_function.c ****     PORTB |= LCD_CE;		// 使能LCD
  50:3310LCD_function.c ****     delay_1us();
  51:3310LCD_function.c **** 
  52:3310LCD_function.c ****     LCD_write_byte(0x21, 0);	// 使用扩展命令设置LCD模式
  53:3310LCD_function.c ****     LCD_write_byte(0xc8, 0);	// 设置偏置电压
  54:3310LCD_function.c ****     LCD_write_byte(0x06, 0);	// 温度校正
  55:3310LCD_function.c ****     LCD_write_byte(0x13, 0);	// 1:48
  56:3310LCD_function.c ****     LCD_write_byte(0x20, 0);	// 使用基本命令
  57:3310LCD_function.c ****     LCD_clear();	        // 清屏
  58:3310LCD_function.c ****     LCD_write_byte(0x0c, 0);	// 设定显示模式,正常显示
  59:3310LCD_function.c ****         
  60:3310LCD_function.c ****     PORTB &= ~LCD_CE ;          // 关闭LCD
  61:3310LCD_function.c ****   }
  62:3310LCD_function.c **** 
  63:3310LCD_function.c **** /*-----------------------------------------------------------------------
  64:3310LCD_function.c **** LCD_clear         : LCD清屏函数
  65:3310LCD_function.c **** 
  66:3310LCD_function.c **** 编写日期          :2004-8-10 
  67:3310LCD_function.c **** 最后修改日期      :2004-8-10 
  68:3310LCD_function.c **** -----------------------------------------------------------------------*/
  69:3310LCD_function.c **** void LCD_clear(void)
  70:3310LCD_function.c **** {
  71:3310LCD_function.c ****     unsigned int i;
  72:3310LCD_function.c **** 
  73:3310LCD_function.c ****     LCD_write_byte(0x0c, 0);			
  74:3310LCD_function.c ****     LCD_write_byte(0x80, 0);			
  75:3310LCD_function.c **** 
  76:3310LCD_function.c ****     for (i=0; i<504; i++)
  77:3310LCD_function.c ****       LCD_write_byte(0, 1);			
  78:3310LCD_function.c **** }
  79:3310LCD_function.c **** 
  80:3310LCD_function.c **** /*-----------------------------------------------------------------------
  81:3310LCD_function.c **** LCD_set_XY        : 设置LCD坐标函数
  82:3310LCD_function.c **** 
  83:3310LCD_function.c **** 输入参数:X       :0-83
  84:3310LCD_function.c ****           Y       :0-5
  85:3310LCD_function.c **** 
  86:3310LCD_function.c **** 编写日期          :2004-8-10 
  87:3310LCD_function.c **** 最后修改日期      :2004-8-10 
  88:3310LCD_function.c **** -----------------------------------------------------------------------*/
  89:3310LCD_function.c **** void LCD_set_XY(unsigned char X, unsigned char Y)
  90:3310LCD_function.c **** {
  91:3310LCD_function.c ****     LCD_write_byte(0x40 | Y, 0);		// column
  92:3310LCD_function.c ****     LCD_write_byte(0x80 | X, 0);          	// row
  93:3310LCD_function.c **** }
  94:3310LCD_function.c **** 
  95:3310LCD_function.c **** /*-----------------------------------------------------------------------
  96:3310LCD_function.c **** LCD_write_char    : 显示英文字符
  97:3310LCD_function.c **** 
  98:3310LCD_function.c **** 输入参数:c       :显示的字符;
  99:3310LCD_function.c **** 
 100:3310LCD_function.c **** 编写日期          :2004-8-10 
 101:3310LCD_function.c **** 最后修改日期      :2004-8-10 
 102:3310LCD_function.c **** -----------------------------------------------------------------------*/
 103:3310LCD_function.c **** void LCD_write_char(unsigned char c)
 104:3310LCD_function.c **** {
 105:3310LCD_function.c ****     unsigned int line;
 106:3310LCD_function.c **** 
 107:3310LCD_function.c ****     c -= 32;
 108:3310LCD_function.c **** 
 109:3310LCD_function.c ****     for (line=0; line<6; line++)
 110:3310LCD_function.c ****       LCD_write_byte(font6x8[c][line], 1);
 111:3310LCD_function.c **** }
 112:3310LCD_function.c **** 
 113:3310LCD_function.c **** 
 114:3310LCD_function.c **** void LCD_write_inverse_char(unsigned char c)
 115:3310LCD_function.c **** {
 116:3310LCD_function.c ****     unsigned int line;
 117:3310LCD_function.c **** 
 118:3310LCD_function.c ****     c -= 32;
 119:3310LCD_function.c **** 
 120:3310LCD_function.c ****     for (line=0; line<6; line++)
 121:3310LCD_function.c ****       LCD_write_byte(~font6x8[c][line], 1);
 122:3310LCD_function.c **** }
 123:3310LCD_function.c **** 
 124:3310LCD_function.c **** /*-----------------------------------------------------------------------
 125:3310LCD_function.c **** LCD_write_english_String  : 英文字符串显示函数
 126:3310LCD_function.c **** 
 127:3310LCD_function.c **** 输入参数:*s      :英文字符串指针;
 128:3310LCD_function.c ****           X、Y    : 显示字符串的位置,x 0-83 ,y 0-5
 129:3310LCD_function.c **** 
 130:3310LCD_function.c **** 编写日期          :2004-8-10 
 131:3310LCD_function.c **** 最后修改日期      :2004-8-10 		
 132:3310LCD_function.c **** -----------------------------------------------------------------------*/
 133:3310LCD_function.c **** void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
 134:3310LCD_function.c ****   {
 135:3310LCD_function.c ****     LCD_set_XY(X,Y);
 136:3310LCD_function.c ****     while (*s) 
 137:3310LCD_function.c ****     {
 138:3310LCD_function.c **** 		LCD_write_char(*s);
 139:3310LCD_function.c **** 		s++;
 140:3310LCD_function.c ****     }
 141:3310LCD_function.c ****   }
 142:3310LCD_function.c **** 
 143:3310LCD_function.c **** void LCD_write_inverse_string(unsigned char X,unsigned char Y,char *s)
 144:3310LCD_function.c **** {
 145:3310LCD_function.c ****     LCD_set_XY(X,Y);
 146:3310LCD_function.c ****     while (*s) 
 147:3310LCD_function.c ****     {
 148:3310LCD_function.c **** 		LCD_write_inverse_char(*s);
 149:3310LCD_function.c **** 		s++;
 150:3310LCD_function.c ****     }
 151:3310LCD_function.c **** }
 152:3310LCD_function.c **** 
 153:3310LCD_function.c **** /*-----------------------------------------------------------------------
 154:3310LCD_function.c **** LCD_write_byte    : 使用SPI接口写数据到LCD
 155:3310LCD_function.c **** 
 156:3310LCD_function.c **** 输入参数:data    :写入的数据;
 157:3310LCD_function.c ****           command :写数据/命令选择;
 158:3310LCD_function.c **** 
 159:3310LCD_function.c **** 编写日期          :2004-8-10 
 160:3310LCD_function.c **** 最后修改日期      :2004-8-13 
 161:3310LCD_function.c **** -----------------------------------------------------------------------*/
 162:3310LCD_function.c **** void LCD_write_byte(unsigned char data, unsigned char command)
 163:3310LCD_function.c **** {
 744               	.LM13:
 745               	/* prologue: frame size=0 */
 746               	/* prologue end (size=0) */
 747 003c 982F      		mov r25,r24
 164:3310LCD_function.c ****     PORTB &= ~LCD_CE ;		        // 使能LCD
 749               	.LM14:
 750 003e C298      		cbi 56-0x20,2
 165:3310LCD_function.c ****     
 166:3310LCD_function.c ****     if (command == 0)
 752               	.LM15:
 753 0040 6623      		tst r22
 754 0042 11F4      		brne .L144
 167:3310LCD_function.c ****       PORTB &= ~LCD_DC ;	        // 传送命令
 756               	.LM16:
 757 0044 C098      		cbi 56-0x20,0
 758 0046 01C0      		rjmp .L145
 759               	.L144:
 168:3310LCD_function.c ****     else
 169:3310LCD_function.c ****       PORTB |= LCD_DC ;		        // 传送数据
 761               	.LM17:
 762 0048 C09A      		sbi 56-0x20,0
 763               	.L145:
 170:3310LCD_function.c **** 
 171:3310LCD_function.c ****     SPDR = data;			// 传送数据到SPI寄存器
 765               	.LM18:
 766 004a 9FB9      		out 47-0x20,r25
 767               	.L146:
 172:3310LCD_function.c **** 
 173:3310LCD_function.c ****     while ((SPSR & 0x80) == 0);         // 等待数据传送完毕
 769               	.LM19:
 770 004c 779B      		sbis 46-0x20,7
 771 004e FECF      		rjmp .L146
 174:3310LCD_function.c **** 	
 175:3310LCD_function.c ****     PORTB |= LCD_CE ;			// 关闭LCD
 773               	.LM20:
 774 0050 C29A      		sbi 56-0x20,2
 775               	/* epilogue: frame size=0 */
 776 0052 0895      		ret
 777               	/* epilogue end (size=1) */
 778               	/* function LCD_write_byte size 12 (11) */
 781               	.global	LCD_clear
 783               	LCD_clear:
 785               	.LM21:
 786               	/* prologue: frame size=0 */
 787 0054 CF93      		push r28
 788 0056 DF93      		push r29
 789               	/* prologue end (size=2) */
 791               	.LM22:
 792 0058 60E0      		ldi r22,lo8(0)
 793 005a 8CE0      		ldi r24,lo8(12)
 794 005c EFDF      		rcall LCD_write_byte
 796               	.LM23:
 797 005e 60E0      		ldi r22,lo8(0)
 798 0060 80E8      		ldi r24,lo8(-128)
 799 0062 ECDF      		rcall LCD_write_byte
 800 0064 C7EF      		ldi r28,lo8(503)
 801 0066 D1E0      		ldi r29,hi8(503)
 802               	.L153:
 804               	.LM24:
 805 0068 61E0      		ldi r22,lo8(1)
 806 006a 80E0      		ldi r24,lo8(0)
 807 006c E7DF      		rcall LCD_write_byte
 809               	.LM25:
 810 006e 2197      		sbiw r28,1
 811 0070 D7FF      		sbrs r29,7
 812 0072 FACF      		rjmp .L153
 813               	/* epilogue: frame size=0 */
 814 0074 DF91      		pop r29
 815 0076 CF91      		pop r28
 816 0078 0895      		ret
 817               	/* epilogue end (size=3) */
 818               	/* function LCD_clear size 19 (14) */
 822               	.global	LCD_init
 824               	LCD_init:
 826               	.LM26:
 827               	/* prologue: frame size=0 */
 828               	/* prologue end (size=0) */
 830               	.LM27:
 831 007a C498      		cbi 56-0x20,4
 833               	.LM28:
 834 007c C1DF      		rcall delay_1us
 836               	.LM29:
 837 007e C49A      		sbi 56-0x20,4
 839               	.LM30:
 840 0080 C298      		cbi 56-0x20,2
 842               	.LM31:
 843 0082 BEDF      		rcall delay_1us
 845               	.LM32:
 846 0084 C29A      		sbi 56-0x20,2
 848               	.LM33:
 849 0086 BCDF      		rcall delay_1us
 851               	.LM34:
 852 0088 60E0      		ldi r22,lo8(0)
 853 008a 81E2      		ldi r24,lo8(33)
 854 008c D7DF      		rcall LCD_write_byte
 856               	.LM35:
 857 008e 60E0      		ldi r22,lo8(0)
 858 0090 88EC      		ldi r24,lo8(-56)
 859 0092 D4DF      		rcall LCD_write_byte
 861               	.LM36:
 862 0094 60E0      		ldi r22,lo8(0)
 863 0096 86E0      		ldi r24,lo8(6)
 864 0098 D1DF      		rcall LCD_write_byte
 866               	.LM37:
 867 009a 60E0      		ldi r22,lo8(0)
 868 009c 83E1      		ldi r24,lo8(19)
 869 009e CEDF      		rcall LCD_write_byte
 871               	.LM38:
 872 00a0 60E0      		ldi r22,lo8(0)
 873 00a2 80E2      		ldi r24,lo8(32)

⌨️ 快捷键说明

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