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

📄 nokia5110.lst

📁 好啊,欢迎大家都来下在,很游泳的问张哦.
💻 LST
📖 第 1 页 / 共 3 页
字号:
__start:
__text_start:
    02B6 E5CF      LDI	R28,0x5F
    02B7 E0D4      LDI	R29,4
    02B8 BFCD      OUT	0x3D,R28
    02B9 BFDE      OUT	0x3E,R29
    02BA 51C0      SUBI	R28,0x10
    02BB 40D0      SBCI	R29,0
    02BC EA0A      LDI	R16,0xAA
    02BD 8308      STD	Y+0,R16
    02BE 2400      CLR	R0
    02BF E7EE      LDI	R30,0x7E
    02C0 E0F0      LDI	R31,0
    02C1 E010      LDI	R17,0
    02C2 37EE      CPI	R30,0x7E
    02C3 07F1      CPC	R31,R17
    02C4 F011      BEQ	0x02C7
    02C5 9201      ST	R0,Z+
    02C6 CFFB      RJMP	0x02C2
    02C7 8300      STD	Z+0,R16
    02C8 E4EE      LDI	R30,0x4E
    02C9 E0F5      LDI	R31,5
    02CA E6A0      LDI	R26,0x60
    02CB E0B0      LDI	R27,0
    02CC E015      LDI	R17,5
    02CD 36EC      CPI	R30,0x6C
    02CE 07F1      CPC	R31,R17
    02CF F021      BEQ	0x02D4
    02D0 95C8      LPM
    02D1 9631      ADIW	R30,1
    02D2 920D      ST	R0,X+
    02D3 CFF9      RJMP	0x02CD
    02D4 D001      RCALL	_main
_exit:
    02D5 CFFF      RJMP	_exit
_main:
    02D6 9727      SBIW	R28,7
FILE: E:\Study\AVR\nokia5110\main.c
(0001) /*
(0002) Nokia5110 在msp430单片机上的应用
(0003) 
(0004) 赵亮 zhaoliang_0801@dl.cn
(0005) 07-05-10
(0006) */
(0007) #include <iom8v.h>
(0008) #include <macros.h>
(0009) 
(0010) #include "nokia_5110.h"
(0011) #include "bmp_pixel.h"
(0012) 
(0013) /******************************************************************************/
(0014) void main(void) 
(0015) {
(0016) 	
(0017) 
(0018) 	LCD_init(); //初始化液晶    
    02D7 D048      RCALL	_LCD_init
(0019) 	LCD_clear();
    02D8 D066      RCALL	_LCD_clear
    02D9 C022      RJMP	0x02FC
(0020)   //P6DIR = 0xff;
(0021) 	while(1)  
(0022) 	{
(0023) 		LCD_write_english_string(0,2,"NOKIA 5110 LCD");
    02DA E68F      LDI	R24,0x6F
    02DB E090      LDI	R25,0
    02DC 8399      STD	Y+1,R25
    02DD 8388      STD	Y+0,R24
    02DE E022      LDI	R18,2
    02DF 2700      CLR	R16
    02E0 D098      RCALL	_LCD_write_english_string
(0024) 		LCD_write_english_string(0,3," on 51 by zl !");
    02E1 E680      LDI	R24,0x60
    02E2 E090      LDI	R25,0
    02E3 8399      STD	Y+1,R25
    02E4 8388      STD	Y+0,R24
    02E5 E023      LDI	R18,3
    02E6 2700      CLR	R16
    02E7 D091      RCALL	_LCD_write_english_string
(0025) 		LCD_write_chinese_string(0,0,12,7,0,0);
    02E8 2422      CLR	R2
    02E9 822E      STD	Y+6,R2
    02EA 822C      STD	Y+4,R2
    02EB E087      LDI	R24,7
    02EC 838A      STD	Y+2,R24
    02ED E08C      LDI	R24,0xC
    02EE 8388      STD	Y+0,R24
    02EF 2722      CLR	R18
    02F0 2700      CLR	R16
    02F1 D09B      RCALL	_LCD_write_chinese_string
(0026) 		LCD_write_chinese_string(0,4,12,7,0,0);
    02F2 2422      CLR	R2
    02F3 822E      STD	Y+6,R2
    02F4 822C      STD	Y+4,R2
    02F5 E087      LDI	R24,7
    02F6 838A      STD	Y+2,R24
    02F7 E08C      LDI	R24,0xC
    02F8 8388      STD	Y+0,R24
    02F9 E024      LDI	R18,4
    02FA 2700      CLR	R16
    02FB D091      RCALL	_LCD_write_chinese_string
    02FC CFDD      RJMP	0x02DA
(0027) 	}	  
(0028) 
(0029) 
(0030) }
    02FD 9627      ADIW	R28,7
    02FE 9508      RET
FILE: E:\Study\AVR\nokia5110\nokia_5110.c
(0001) 
(0002) 
(0003) #include "nokia_5110.h"
(0004) #include "english_6x8_pixel.h"
(0005) #include "write_chinese_string_pixel.h"
(0006) #include "move_chinese_string_pixel.h"
(0007) 
(0008) 
(0009) /*-----------------------------------------------------------------------
(0010) LCD_init          : 3310LCD初始化
(0011) 
(0012) 编写日期          :2004-8-10 
(0013) 最后修改日期      :2004-8-10 
(0014) -----------------------------------------------------------------------*/
(0015) 
(0016) void delay_1us(void)                 //1us延时函数
(0017) {
(0018)    unsigned int i;
(0019)   for(i=0;i<100;i++);
_delay_1us:
  i                    --> R16
    02FF 2700      CLR	R16
    0300 2711      CLR	R17
    0301 C002      RJMP	0x0304
    0302 5F0F      SUBI	R16,0xFF
    0303 4F1F      SBCI	R17,0xFF
    0304 3604      CPI	R16,0x64
    0305 E0E0      LDI	R30,0
    0306 071E      CPC	R17,R30
    0307 F3D0      BCS	0x0302
(0020)    
(0021) }
    0308 9508      RET
(0022) 
(0023)   void delay_1ms(void)                 //1ms延时函数
(0024)   {
(0025)    unsigned int i;
(0026)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    0309 2700      CLR	R16
    030A 2711      CLR	R17
    030B C002      RJMP	0x030E
    030C 5F0F      SUBI	R16,0xFF
    030D 4F1F      SBCI	R17,0xFF
    030E 3704      CPI	R16,0x74
    030F E0E4      LDI	R30,4
    0310 071E      CPC	R17,R30
    0311 F3D0      BCS	0x030C
(0027)   }
    0312 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    0313 D208      RCALL	push_gset2
    0314 01B8      MOVW	R22,R16
(0028)   
(0029) void delay_nms(unsigned int n)       //N ms延时函数
(0030)   {
(0031)    unsigned int i=0;
    0315 2744      CLR	R20
    0316 2755      CLR	R21
(0032)    for (i=0;i<n;i++)
    0317 C003      RJMP	0x031B
(0033)    delay_1ms();
    0318 DFF0      RCALL	_delay_1ms
    0319 5F4F      SUBI	R20,0xFF
    031A 4F5F      SBCI	R21,0xFF
    031B 1746      CP	R20,R22
    031C 0757      CPC	R21,R23
    031D F3D0      BCS	0x0318
(0034)   }
    031E D1E0      RCALL	pop_gset2
    031F 9508      RET
(0035) 
(0036) 
(0037) void LCD_init(void)
(0038)   {
(0039)             // 产生一个让LCD复位的低电平脉冲
(0040)   // LCD_RST = 0;
(0041) 	
(0042) 	LCD_5110_DIR |= (0x01 << LCD_RST) + (0x01 << LCD_CE) + (0x01 << LCD_DC) 
_LCD_init:
    0320 B381      IN	R24,0x11
    0321 618F      ORI	R24,0x1F
    0322 BB81      OUT	0x11,R24
(0043) 	  				+ (0x01 << LCD_DIN) + (0x01<< LCD_CLK);
(0044) 	
(0045)    LCD_5110_PORT &= ~(0x01 << LCD_RST);
    0323 9894      CBI	0x12,4
(0046)     delay_1us();
    0324 DFDA      RCALL	_delay_1us
(0047) 
(0048)   // LCD_RST = 1;
(0049)    LCD_5110_PORT |= (0x01 << LCD_RST);
    0325 9A94      SBI	0x12,4
(0050)     
(0051) 		// 关闭LCD
(0052)    //LCD_CE = 0;
(0053)     LCD_5110_PORT &= ~(0x01 << LCD_CE);
    0326 9893      CBI	0x12,3
(0054)     delay_1us();
    0327 DFD7      RCALL	_delay_1us
(0055) 		// 使能LCD
(0056)    //LCD_CE = 1;
(0057)    LCD_5110_PORT |= (0x01 << LCD_CE);
    0328 9A93      SBI	0x12,3
(0058)     delay_1us();
    0329 DFD5      RCALL	_delay_1us
(0059) 
(0060)     LCD_write_byte(0x21, 0);	// 使用扩展命令设置LCD模式
    032A 2722      CLR	R18
    032B E201      LDI	R16,0x21
    032C D18E      RCALL	_LCD_write_byte
(0061)     LCD_write_byte(0xc8, 0);	// 设置偏置电压
    032D 2722      CLR	R18
    032E EC08      LDI	R16,0xC8
    032F D18B      RCALL	_LCD_write_byte
(0062)     LCD_write_byte(0x06, 0);	// 温度校正
    0330 2722      CLR	R18
    0331 E006      LDI	R16,6
    0332 D188      RCALL	_LCD_write_byte
(0063)     LCD_write_byte(0x13, 0);	// 1:48
    0333 2722      CLR	R18
    0334 E103      LDI	R16,0x13
    0335 D185      RCALL	_LCD_write_byte
(0064)     LCD_write_byte(0x20, 0);	// 使用基本命令
    0336 2722      CLR	R18
    0337 E200      LDI	R16,0x20
    0338 D182      RCALL	_LCD_write_byte
(0065)     LCD_clear();	        // 清屏
    0339 D005      RCALL	_LCD_clear
(0066)     LCD_write_byte(0x0c, 0);	// 设定显示模式,正常显示
    033A 2722      CLR	R18
    033B E00C      LDI	R16,0xC
    033C D17E      RCALL	_LCD_write_byte
(0067)         
(0068)            // 关闭LCD
(0069)   // LCD_CE = 0;
(0070) 	 LCD_5110_PORT &= ~(0x01 << LCD_CE);
    033D 9893      CBI	0x12,3
(0071)   }
    033E 9508      RET
_LCD_clear:
  i                    --> R20
    033F D1C5      RCALL	push_gset1
(0072) 
(0073) /*-----------------------------------------------------------------------
(0074) LCD_clear         : LCD清屏函数
(0075) 
(0076) 编写日期          :2004-8-10 
(0077) 最后修改日期      :2004-8-10 
(0078) -----------------------------------------------------------------------*/
(0079) void LCD_clear(void)
(0080)   {
(0081)     unsigned int i;
(0082) 
(0083)     LCD_write_byte(0x0c, 0);			
    0340 2722      CLR	R18
    0341 E00C      LDI	R16,0xC
    0342 D178      RCALL	_LCD_write_byte
(0084)     LCD_write_byte(0x80, 0);			
    0343 2722      CLR	R18
    0344 E800      LDI	R16,0x80
    0345 D175      RCALL	_LCD_write_byte
(0085) 
(0086)     for (i=0; i<504; i++)
    0346 2744      CLR	R20
    0347 2755      CLR	R21
    0348 C005      RJMP	0x034E
(0087)       LCD_write_byte(0, 1);			
    0349 E021      LDI	R18,1
    034A 2700      CLR	R16
    034B D16F      RCALL	_LCD_write_byte
    034C 5F4F      SUBI	R20,0xFF
    034D 4F5F      SBCI	R21,0xFF
    034E 3F48      CPI	R20,0xF8
    034F E0E1      LDI	R30,1
    0350 075E      CPC	R21,R30
    0351 F3B8      BCS	0x0349
(0088)   }
    0352 D1B5      RCALL	pop_gset1
    0353 9508      RET
_LCD_set_XY:
  Y                    --> R22
  X                    --> R20
    0354 D1C7      RCALL	push_gset2
    0355 2F62      MOV	R22,R18
    0356 2F40      MOV	R20,R16
(0089) 
(0090) /*-----------------------------------------------------------------------
(0091) LCD_set_XY        : 设置LCD坐标函数
(0092) 
(0093) 输入参数:X       :0-83
(0094)           Y       :0-5
(0095) 
(0096) 编写日期          :2004-8-10 
(0097) 最后修改日期      :2004-8-10 
(0098) -----------------------------------------------------------------------*/
(0099) void LCD_set_XY(unsigned char X, unsigned char Y)
(0100)   {
(0101)     LCD_write_byte(0x40 | Y, 0);		// column
    0357 2722      CLR	R18
    0358 2F06      MOV	R16,R22
    0359 6400      ORI	R16,0x40
    035A D160      RCALL	_LCD_write_byte
(0102)     LCD_write_byte(0x80 | X, 0);          	// row
    035B 2722      CLR	R18
    035C 2F04      MOV	R16,R20
    035D 6800      ORI	R16,0x80
    035E D15C      RCALL	_LCD_write_byte
(0103)   }
    035F D19F      RCALL	pop_gset2
    0360 9508      RET
_LCD_write_char:
  line                 --> R20
  c                    --> R22
    0361 D1BA      RCALL	push_gset2
    0362 2F60      MOV	R22,R16
(0104) 
(0105) /*-----------------------------------------------------------------------
(0106) LCD_write_char    : 显示英文字符
(0107) 
(0108) 输入参数:c       :显示的字符;
(0109) 
(0110) 编写日期          :2004-8-10 
(0111) 最后修改日期      :2004-8-10 
(0112) -----------------------------------------------------------------------*/
(0113) void LCD_write_char(unsigned char c)
(0114)   {
(0115)     unsigned char line;
(0116) 
(0117)     c -= 32;
    0363 5260      SUBI	R22,0x20
(0118) 
(0119)     for (line=0; line<6; line++)
    0364 2744      CLR	R20
    0365 C00F      RJMP	0x0375
(0120)       LCD_write_byte(font6x8[c][line], 1);
    0366 E021      LDI	R18,1
    0367 E086      LDI	R24,6
    0368 9F86      MUL	R24,R22
    0369 0110      MOVW	R2,R0
    036A EB86      LDI	R24,0xB6

⌨️ 快捷键说明

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