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

📄 lcd12864_st7920.lst

📁 12864的实例程序 根据自己需要选择自己需要的部分
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0325) 	if( I2C_Start()==I2C_ERR )
    0176 DF42      RCALL	_I2C_Start
    0177 2300      TST	R16
    0178 F411      BNE	0x017B
(0326) 		return I2C_ERR;
    0179 2700      CLR	R16
    017A C021      RJMP	0x019C
(0327) 
(0328) 	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
    017B 018B      MOVW	R16,R22
    017C DF64      RCALL	_I2C_SendWrDAdr_
    017D 2300      TST	R16
    017E F411      BNE	0x0181
(0329) 		return I2C_ERR;
    017F 2700      CLR	R16
    0180 C01B      RJMP	0x019C
(0330) 
(0331) 	if( I2C_SendDat(wordAdr)==I2C_ERR )
    0181 2F04      MOV	R16,R20
    0182 DFA0      RCALL	_I2C_SendDat
    0183 2300      TST	R16
    0184 F411      BNE	0x0187
(0332) 		return I2C_ERR;
    0185 2700      CLR	R16
    0186 C015      RJMP	0x019C
(0333) 
(0334) 	if( I2C_Restart()==I2C_ERR )
    0187 DF3E      RCALL	_I2C_Restart
    0188 2300      TST	R16
    0189 F411      BNE	0x018C
(0335) 		return I2C_ERR;
    018A 2700      CLR	R16
    018B C010      RJMP	0x019C
(0336) 
(0337) 	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
    018C 810C      LDD	R16,Y+4
    018D DF6D      RCALL	_I2C_SendRdDAdr
    018E 2300      TST	R16
    018F F411      BNE	0x0192
(0338) 		return I2C_ERR;
    0190 2700      CLR	R16
    0191 C00A      RJMP	0x019C
(0339) 
(0340) 	if( I2C_RcvNAckDat(pRdDat)==I2C_ERR )
    0192 810E      LDD	R16,Y+6
    0193 811F      LDD	R17,Y+7
    0194 DF9C      RCALL	_I2C_RcvNAckDat
    0195 2300      TST	R16
    0196 F411      BNE	0x0199
(0341) 		return I2C_ERR;
    0197 2700      CLR	R16
    0198 C003      RJMP	0x019C
(0342) 
(0343) 	I2C_Stop();
    0199 E984      LDI	R24,0x94
    019A BF86      OUT	0x36,R24
(0344) 
(0345) 	return I2C_CRR;
    019B E001      LDI	R16,1
    019C 940E047A  CALL	pop_gset2
    019E 9508      RET
_I2C_Read_:
  i                    --> R20
  num                  --> R22
  pRdDat               --> R10
  rdDAdr               --> Y+8
  wordAdr              --> R20
  wrDAdr               --> R12
    019F 940E0488  CALL	push_gset4
    01A1 2F42      MOV	R20,R18
    01A2 0168      MOVW	R12,R16
    01A3 84AA      LDD	R10,Y+10
    01A4 84BB      LDD	R11,Y+11
    01A5 856C      LDD	R22,Y+12
(0346) }
(0347) /*--------------------------------------------------------------------
(0348) 函数名称:I2C读器件,读N个数据
(0349) 函数功能:
(0350) 注意事项:
(0351) 提示说明:
(0352) 输    入:wrDAdr: write device-address 写器件地址
(0353) 		 wordAdr: word address 字地址
(0354) 		 rdDAdr: read device-address 读器件地址
(0355) 		 *pRdDat: p->read data 读取数据指针
(0356) 		 num: number 读取数据个数
(0357) 返    回:
(0358) --------------------------------------------------------------------*/
(0359) bool I2C_Read_(uint16 wrDAdr,uint8 wordAdr,
(0360) 			   uint8 rdDAdr,uint8 *pRdDat,uint8 num)
(0361) {
(0362)  	uint8 i;
(0363) 	
(0364) 	if( I2C_Start()==I2C_ERR )
    01A6 DF12      RCALL	_I2C_Start
    01A7 2300      TST	R16
    01A8 F411      BNE	0x01AB
(0365) 		return I2C_ERR;
    01A9 2700      CLR	R16
    01AA C033      RJMP	0x01DE
(0366) 
(0367) 	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
    01AB 0186      MOVW	R16,R12
    01AC DF34      RCALL	_I2C_SendWrDAdr_
    01AD 2300      TST	R16
    01AE F411      BNE	0x01B1
(0368) 		return I2C_ERR;
    01AF 2700      CLR	R16
    01B0 C02D      RJMP	0x01DE
(0369) 
(0370) 	if( I2C_SendDat(wordAdr)==I2C_ERR )
    01B1 2F04      MOV	R16,R20
    01B2 DF70      RCALL	_I2C_SendDat
    01B3 2300      TST	R16
    01B4 F411      BNE	0x01B7
(0371) 		return I2C_ERR;
    01B5 2700      CLR	R16
    01B6 C027      RJMP	0x01DE
(0372) 
(0373) 	if( I2C_Restart()==I2C_ERR )
    01B7 DF0E      RCALL	_I2C_Restart
    01B8 2300      TST	R16
    01B9 F411      BNE	0x01BC
(0374) 		return I2C_ERR;
    01BA 2700      CLR	R16
    01BB C022      RJMP	0x01DE
(0375) 
(0376) 	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
    01BC 8508      LDD	R16,Y+8
    01BD DF3D      RCALL	_I2C_SendRdDAdr
    01BE 2300      TST	R16
    01BF F411      BNE	0x01C2
(0377) 		return I2C_ERR;
    01C0 2700      CLR	R16
    01C1 C01C      RJMP	0x01DE
(0378) 
(0379) 	for(i=0;i<num-1;i++)
    01C2 2744      CLR	R20
    01C3 C00A      RJMP	0x01CE
(0380) 		if( I2C_RcvAckDat(pRdDat+i)==I2C_ERR )
    01C4 2F04      MOV	R16,R20
    01C5 2711      CLR	R17
    01C6 0D0A      ADD	R16,R10
    01C7 1D1B      ADC	R17,R11
    01C8 DF78      RCALL	_I2C_RcvAckDat
    01C9 2300      TST	R16
    01CA F411      BNE	0x01CD
(0381) 			return I2C_ERR;
    01CB 2700      CLR	R16
    01CC C011      RJMP	0x01DE
    01CD 9543      INC	R20
    01CE 2F86      MOV	R24,R22
    01CF 5081      SUBI	R24,1
    01D0 1748      CP	R20,R24
    01D1 F390      BCS	0x01C4
(0382) 	
(0383) 	if( I2C_RcvNAckDat(pRdDat+i)==I2C_ERR )
    01D2 2F04      MOV	R16,R20
    01D3 2711      CLR	R17
    01D4 0D0A      ADD	R16,R10
    01D5 1D1B      ADC	R17,R11
    01D6 DF5A      RCALL	_I2C_RcvNAckDat
    01D7 2300      TST	R16
    01D8 F411      BNE	0x01DB
(0384) 			return I2C_ERR;
    01D9 2700      CLR	R16
    01DA C003      RJMP	0x01DE
(0385) 
(0386) 	I2C_Stop();
    01DB E984      LDI	R24,0x94
    01DC BF86      OUT	0x36,R24
(0387) 	
(0388) 	return I2C_CRR;
    01DD E001      LDI	R16,1
    01DE 940E0480  CALL	pop_gset4
    01E0 9508      RET
_delay50us:
  j                    --> R20
  t                    --> R16
    01E1 940E048E  CALL	push_gset1
FILE: D:\ICC_H\Hardware.H
(0001) /*********************************************************************
(0002) 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
(0003) 		                                                        
(0004) 目    的:   建立AVR的硬件提取库,增加各类补丁,方便移植
(0005) 					
(0006) 目标系统:   基于AVR单片机
(0007) 		                                                                
(0008) 应用软件:   ICCAVR
(0009) 		                                                                
(0010) 版    本:   Version 1.0                                                          
(0011) 		                                                                
(0012) 圆版时间:   2005-06-25
(0013) 	
(0014) 开发人员:   SEE
(0015) 
(0016) 说    明:   若用于商业用途,请保留此段文字或注明代码来源
(0017) 	
(0018) 	深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权     
(0019) *********************************************************************/
(0020) 
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024) 
(0025) ----------------------------------------------------------------------
(0026) 入口参数说明:
(0027) 
(0028) ----------------------------------------------------------------------
(0029) 待定参数说明:
(0030) 
(0031) ----------------------------------------------------------------------	
(0032) 对外变量说明:
(0033)     
(0034) ----------------------------------------------------------------------
(0035) 对外函数说明:
(0036)    
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039) 
(0040) #ifndef Hardware_H
(0041) #define Hardware_H
(0042) 
(0043) #include <math.h>
(0044) #include <string.h>
(0045) #include <stdio.h>
(0046) #include <macros.h>
(0047) #include <eeprom.h>
(0048) //#include <wdt.h>
(0049) 
(0050) /* TWI configs */
(0051) //如使用ATMEGA162(没有TWI接口)之类的MCU,在加载Hardware.H前,务必加“#define NO_INCLUDE_I2C_H 1”语句
(0052) #if NO_INCLUDE_I2C_H
(0053) ;
(0054) #else
(0055) #include "D:\ICC_H\I2C.H"	//i2c即AVR的"twi"
(0056) #endif
(0057) 
(0058) /* hard configs */
(0059) #ifndef flash
(0060) 	#define flash	const
(0061) #endif
(0062) 
(0063) #ifndef code
(0064) 	#define code	const
(0065) #endif
(0066) 
(0067) #ifndef NOP
(0068) 	#define NOP()	asm("nop")
(0069) #endif
(0070) 
(0071) /* io configs */
(0072) #define sbi(io,bit)		(  io |=  (1<<bit) )	//example: sbi(PORTA,0);sbi(DDRA,0);
(0073) #define cbi(io,bit)		(  io &= ~(1<<bit) )	//example: cbi(PORTA,0);cbi(DDRA,0);
(0074) #define gbi(pin ,bit)	( pin &   (1<<bit) )	//example: gbi(PINA,0);
(0075) 
(0076) /* interrupt configs */
(0077) #define DIS_INT  asm("sei")
(0078) #define EN_INT   asm("cli")
(0079) 
(0080) /* wdt configs */
(0081) #define WDT()    asm("wdr")
(0082) 
(0083) /* bit operation */
(0084) //#ifndef BIT
(0085) //#define BIT(x)	( 1<<(x) )
(0086) //#endif
(0087) 
(0088) /* USART configs for 4 Mhz crystal */
(0089) //#define BAUD9600			25
(0090) //#define BAUD19000			12
(0091) //#define UART_TRAN_ON()	UCR |=  0x08
(0092) //#define UART_TRAN_OFF()	UCR &= ~0x08
(0093) //#define UART_RCV_ON()		UCR |=  0x10
(0094) //#define UART_RCV_OFF()	UCR &= ~0x10
(0095) 
(0096) /*--------------------------------------------------------------------
(0097) 函数全称:50us 延时
(0098) 函数功能:当然是 50us延时 啦
(0099) 注意事项:基于7.3728M晶振,稍微有点误差
(0100) 提示说明:调用delay50us(20),得到1ms延时
(0101) 输    入:	
(0102) 返    回:无 
(0103) --------------------------------------------------------------------*/
(0104) void delay50us(sint16 t)
(0105) {
(0106)     uint8 j;		
(0107)     for(;t>0;t--)			
    01E3 C007      RJMP	0x01EB
(0108)         for(j=0;j<70;j++)	
    01E4 2744      CLR	R20
    01E5 C001      RJMP	0x01E7
    01E6 9543      INC	R20
    01E7 3446      CPI	R20,0x46
    01E8 F3E8      BCS	0x01E6
    01E9 5001      SUBI	R16,1
    01EA 4010      SBCI	R17,0
    01EB 2422      CLR	R2
    01EC 2433      CLR	R3
    01ED 1620      CP	R2,R16
    01EE 0631      CPC	R3,R17
    01EF F3A4      BLT	0x01E4
    01F0 940E0491  CALL	pop_gset1
    01F2 9508      RET
_delay50ms:
  i                    --> R20
  t                    --> R16
    01F3 940E048E  CALL	push_gset1
(0109)             ;
(0110) }
(0111) /*--------------------------------------------------------------------
(0112) 函数全称:50ms 延时
(0113) 函数功能:当然是 50ms延时 啦
(0114) 注意事项:基于7.3728M晶振,稍微有点误差
(0115) 提示说明:调用delay50ms(20),得到1s延时 
(0116) 输    入:
(0117) 返    回:无
(0118) --------------------------------------------------------------------*/
(0119) void delay50ms(sint16 t)
(0120) {
(0121) 	uint16 i; 
(0122) 	for(;t>0;t--)
    01F5 C00B      RJMP	0x0201
(0123) 		for(i=0;i<52642;i++)
    01F6 2744      CLR	R20
    01F7 2755      CLR	R21
    01F8 C002      RJMP	0x01FB
    01F9 5F4F      SUBI	R20,0xFF
    01FA 4F5F      SBCI	R21,0xFF
    01FB 3A42      CPI	R20,0xA2
    01FC ECED      LDI	R30,0xCD
    01FD 075E      CPC	R21,R30
    01FE F3D0      BCS	0x01F9
    01FF 5001      SUBI	R16,1
    0200 4010      SBCI	R17,0
    0201 2422      CLR	R2
    0202 2433      CLR	R3
    0203 1620      CP	R2,R16
    0204 0631      CPC	R3,R17
    0205 F384      BLT	0x01F6
    0206 940E0491  CALL	pop_gset1
    0208 9508      RET
FILE: D:\ICC_H\LCD12864_ST7920.H
(0001) /*********************************************************************
(0002) 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
(0003) 	                                                        
(0004) 目    的:   建立LCD12864_ST7920的串模式操作库
(0005) 
(0006) 目标系统:   基于AVR单片机
(0007) 	                                                                
(0008) 应用软件:   ICCAVR                                               
(0009) 	                                                                
(0010) 版    本:   Version 1.0
(0011) 	                                                                
(0012) 圆版时间:   2005-09-06
(0013) 
(0014) 开发人员:   SEE
(0015) 
(0016) 说    明:   若用于商业用途,请保留此段文字或注明代码来源
(0017) 
(0018) 	深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权 
(0019) *********************************************************************/
(0020) 
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024) 
(0025) 
(0026) 
(0027) ----------------------------------------------------------------------
(0028) 入口参数说明:
(0029) 	//#define OUT_LCD_CS	sbi(DDRD,0)
(0030) 	//#define SET_LCD_CS	sbi(PORTD,0)
(0031) 	//#define CLR_LCD_CS	cbi(PORTD,0)
(0032) 
(0033) ----------------------------------------------------------------------
(0034) 待定参数说明:
(0035) 	
(0036) 
(0037) ----------------------------------------------------------------------	
(0038) 对外变量说明:
(0039) 
(0040) ----------------------------------------------------------------------
(0041) 对外函数说明:
(0042) 
(0043) ----------------------------------------------------------------------
(0044) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0045) 
(0046) 
(0047) /*--------------------------------------------------------------------
(0048) 接口定义:
(0049) 
(0050) LCD12864_ST7920			ATmega16
(0051) 1.GND		--------	GND

⌨️ 快捷键说明

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