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

📄 rfidsys.lst

📁 读写器与射频卡通信的设计采用RC522射频读写芯片与射频卡进行通信
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0205 2700      CLR	R16
    0206 C01B      RJMP	0x0222
(0330) 
(0331) 	if( I2C_SendDat(wordAdr)==I2C_ERR )
    0207 2F04      MOV	R16,R20
    0208 DFA0      RCALL	_I2C_SendDat
    0209 2300      TST	R16
    020A F411      BNE	0x020D
(0332) 		return I2C_ERR;
    020B 2700      CLR	R16
    020C C015      RJMP	0x0222
(0333) 
(0334) 	if( I2C_Restart()==I2C_ERR )
    020D DF3E      RCALL	_I2C_Restart
    020E 2300      TST	R16
    020F F411      BNE	0x0212
(0335) 		return I2C_ERR;
    0210 2700      CLR	R16
    0211 C010      RJMP	0x0222
(0336) 
(0337) 	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
    0212 810C      LDD	R16,Y+4
    0213 DF6D      RCALL	_I2C_SendRdDAdr
    0214 2300      TST	R16
    0215 F411      BNE	0x0218
(0338) 		return I2C_ERR;
    0216 2700      CLR	R16
    0217 C00A      RJMP	0x0222
(0339) 
(0340) 	if( I2C_RcvNAckDat(pRdDat)==I2C_ERR )
    0218 810E      LDD	R16,Y+6
    0219 811F      LDD	R17,Y+7
    021A DF9C      RCALL	_I2C_RcvNAckDat
    021B 2300      TST	R16
    021C F411      BNE	0x021F
(0341) 		return I2C_ERR;
    021D 2700      CLR	R16
    021E C003      RJMP	0x0222
(0342) 
(0343) 	I2C_Stop();
    021F E984      LDI	R24,0x94
    0220 BF86      OUT	0x36,R24
(0344) 
(0345) 	return I2C_CRR;
    0221 E001      LDI	R16,1
    0222 940E064A  CALL	pop_gset2
    0224 9508      RET
_I2C_Read_:
  i                    --> R20
  num                  --> R22
  pRdDat               --> R10
  rdDAdr               --> Y+8
  wordAdr              --> R20
  wrDAdr               --> R12
    0225 940E0658  CALL	push_gset4
    0227 2F42      MOV	R20,R18
    0228 0168      MOVW	R12,R16
    0229 84AA      LDD	R10,Y+10
    022A 84BB      LDD	R11,Y+11
    022B 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 )
    022C DF12      RCALL	_I2C_Start
    022D 2300      TST	R16
    022E F411      BNE	0x0231
(0365) 		return I2C_ERR;
    022F 2700      CLR	R16
    0230 C033      RJMP	0x0264
(0366) 
(0367) 	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
    0231 0186      MOVW	R16,R12
    0232 DF34      RCALL	_I2C_SendWrDAdr_
    0233 2300      TST	R16
    0234 F411      BNE	0x0237
(0368) 		return I2C_ERR;
    0235 2700      CLR	R16
    0236 C02D      RJMP	0x0264
(0369) 
(0370) 	if( I2C_SendDat(wordAdr)==I2C_ERR )
    0237 2F04      MOV	R16,R20
    0238 DF70      RCALL	_I2C_SendDat
    0239 2300      TST	R16
    023A F411      BNE	0x023D
(0371) 		return I2C_ERR;
    023B 2700      CLR	R16
    023C C027      RJMP	0x0264
(0372) 
(0373) 	if( I2C_Restart()==I2C_ERR )
    023D DF0E      RCALL	_I2C_Restart
    023E 2300      TST	R16
    023F F411      BNE	0x0242
(0374) 		return I2C_ERR;
    0240 2700      CLR	R16
    0241 C022      RJMP	0x0264
(0375) 
(0376) 	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
    0242 8508      LDD	R16,Y+8
    0243 DF3D      RCALL	_I2C_SendRdDAdr
    0244 2300      TST	R16
    0245 F411      BNE	0x0248
(0377) 		return I2C_ERR;
    0246 2700      CLR	R16
    0247 C01C      RJMP	0x0264
(0378) 
(0379) 	for(i=0;i<num-1;i++)
    0248 2744      CLR	R20
    0249 C00A      RJMP	0x0254
(0380) 		if( I2C_RcvAckDat(pRdDat+i)==I2C_ERR )
    024A 2F04      MOV	R16,R20
    024B 2711      CLR	R17
    024C 0D0A      ADD	R16,R10
    024D 1D1B      ADC	R17,R11
    024E DF78      RCALL	_I2C_RcvAckDat
    024F 2300      TST	R16
    0250 F411      BNE	0x0253
(0381) 			return I2C_ERR;
    0251 2700      CLR	R16
    0252 C011      RJMP	0x0264
    0253 9543      INC	R20
    0254 2F86      MOV	R24,R22
    0255 5081      SUBI	R24,1
    0256 1748      CP	R20,R24
    0257 F390      BCS	0x024A
(0382) 	
(0383) 	if( I2C_RcvNAckDat(pRdDat+i)==I2C_ERR )
    0258 2F04      MOV	R16,R20
    0259 2711      CLR	R17
    025A 0D0A      ADD	R16,R10
    025B 1D1B      ADC	R17,R11
    025C DF5A      RCALL	_I2C_RcvNAckDat
    025D 2300      TST	R16
    025E F411      BNE	0x0261
(0384) 			return I2C_ERR;
    025F 2700      CLR	R16
    0260 C003      RJMP	0x0264
(0385) 
(0386) 	I2C_Stop();
    0261 E984      LDI	R24,0x94
    0262 BF86      OUT	0x36,R24
(0387) 	
(0388) 	return I2C_CRR;
    0263 E001      LDI	R16,1
    0264 940E0650  CALL	pop_gset4
    0266 9508      RET
_delay50us:
  j                    --> R20
  t                    --> R16
    0267 940E065E  CALL	push_gset1
FILE: D:\Headers\Hardware.H
(0001) /*********************************************************************
(0002) 
(0003) 目    的:   建立AVR的硬件提取库,增加各类补丁,方便移植
(0004) 
(0005) 目标系统:   基于AVR单片机
(0006) 
(0007) 应用软件:   ICCAVR
(0008) 
(0009) 版    本:   Version 1.0
(0010) 
(0011) 圆版时间:   2008-05-28
(0012) 
(0013) 开发人员:   hky
(0014) 
(0015) 说    明:   若用于商业用途,请保留此段文字或注明代码来源
(0016) 
(0017) *********************************************************************/
(0018) 
(0019) /*01010101010101010101010101010101010101010101010101010101010101010101
(0020) ----------------------------------------------------------------------
(0021) 版本更新记录:
(0022) 
(0023) ----------------------------------------------------------------------
(0024) 入口参数说明:
(0025) 
(0026) ----------------------------------------------------------------------
(0027) 待定参数说明:
(0028) 
(0029) ----------------------------------------------------------------------
(0030) 对外变量说明:
(0031) 
(0032) ----------------------------------------------------------------------
(0033) 对外函数说明:
(0034) 
(0035) ----------------------------------------------------------------------
(0036) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0037) 
(0038) #ifndef Hardware_H
(0039) #define Hardware_H
(0040) 
(0041) #include <math.h>
(0042) #include <string.h>
(0043) #include <stdio.h>
(0044) //#include <macros.h>
(0045) //#include <eeprom.h>
(0046) #include "D:\Headers\macros.h"
(0047) #include "D:\Headers\eeprom.h"
(0048) #include "D:\Headers\I2C.H"
(0049) //#include <wdt.h>
(0050) 
(0051) /* TWI configs */
(0052) //如使用ATMEGA162(没有TWI接口)之类的MCU,在加载Hardware.H前,务必加“#define NO_INCLUDE_I2C_H 1”语句
(0053) #if NO_INCLUDE_I2C_H
(0054) ;
(0055) #else
(0056) #include "D:\Headers\I2C.H"	//i2c即AVR的"twi"
(0057) #endif
(0058) 
(0059) /* hard configs */
(0060) #ifndef flash
(0061) 	#define flash	const
(0062) #endif
(0063) 
(0064) #ifndef code
(0065) 	#define code	const
(0066) #endif
(0067) 
(0068) #ifndef NOP
(0069) 	#define NOP()	asm("nop")
(0070) #endif
(0071) 
(0072) /* io configs */
(0073) #define sbi(io,bit)		(  io |=  (1<<bit) )	//example: sbi(PORTA,0);sbi(DDRA,0);
(0074) #define cbi(io,bit)		(  io &= ~(1<<bit) )	//example: cbi(PORTA,0);cbi(DDRA,0);
(0075) #define gbi(pin ,bit)	( pin &   (1<<bit) )	//example: gbi(PINA,0);
(0076) 
(0077) /* interrupt configs */
(0078) #define DIS_INT  asm("sei")
(0079) #define EN_INT   asm("cli")
(0080) 
(0081) /* wdt configs */
(0082) #define WDT()    asm("wdr")
(0083) 
(0084) /* bit operation */
(0085) //#ifndef BIT
(0086) //#define BIT(x)	( 1<<(x) )
(0087) //#endif
(0088) 
(0089) /* USART configs for 4 Mhz crystal */
(0090) //#define BAUD9600			25
(0091) //#define BAUD19000			12
(0092) //#define UART_TRAN_ON()	UCR |=  0x08
(0093) //#define UART_TRAN_OFF()	UCR &= ~0x08
(0094) //#define UART_RCV_ON()		UCR |=  0x10
(0095) //#define UART_RCV_OFF()	UCR &= ~0x10
(0096) 
(0097) /*--------------------------------------------------------------------
(0098) 函数全称:50us 延时
(0099) 函数功能:当然是 50us延时 啦
(0100) 注意事项:基于7.3728M晶振,稍微有点误差
(0101) 提示说明:调用delay50us(20),得到1ms延时
(0102) 输    入:
(0103) 返    回:无
(0104) --------------------------------------------------------------------*/
(0105) void delay50us(sint16 t)
(0106) {
(0107)     uint8 j;
(0108)     for(;t>0;t--)
    0269 C007      RJMP	0x0271
(0109)         for(j=0;j<70;j++)
    026A 2744      CLR	R20
    026B C001      RJMP	0x026D
    026C 9543      INC	R20
    026D 3446      CPI	R20,0x46
    026E F3E8      BCS	0x026C
    026F 5001      SUBI	R16,1
    0270 4010      SBCI	R17,0
    0271 2422      CLR	R2
    0272 2433      CLR	R3
    0273 1620      CP	R2,R16
    0274 0631      CPC	R3,R17
    0275 F3A4      BLT	0x026A
    0276 940E0661  CALL	pop_gset1
    0278 9508      RET
_delay50ms:
  i                    --> R20
  t                    --> R16
    0279 940E065E  CALL	push_gset1
(0110)             ;
(0111) }
(0112) /*--------------------------------------------------------------------
(0113) 函数全称:50ms 延时
(0114) 函数功能:当然是 50ms延时 啦
(0115) 注意事项:基于7.3728M晶振,稍微有点误差
(0116) 提示说明:调用delay50ms(20),得到1s延时
(0117) 输    入:
(0118) 返    回:无
(0119) --------------------------------------------------------------------*/
(0120) void delay50ms(sint16 t)
(0121) {
(0122) 	uint16 i;
(0123) 	for(;t>0;t--)
    027B C00B      RJMP	0x0287
(0124) 		for(i=0;i<52642;i++)
    027C 2744      CLR	R20
    027D 2755      CLR	R21
    027E C002      RJMP	0x0281
    027F 5F4F      SUBI	R20,0xFF
    0280 4F5F      SBCI	R21,0xFF
    0281 3A42      CPI	R20,0xA2
    0282 ECED      LDI	R30,0xCD
    0283 075E      CPC	R21,R30
    0284 F3D0      BCS	0x027F
    0285 5001      SUBI	R16,1
    0286 4010      SBCI	R17,0
    0287 2422      CLR	R2
    0288 2433      CLR	R3
    0289 1620      CP	R2,R16
    028A 0631      CPC	R3,R17
    028B F384      BLT	0x027C
    028C 940E0661  CALL	pop_gset1
    028E 9508      RET
FILE: D:\Headers\LCD12864_ST7920.H
(0001) /*********************************************************************
(0002) 目    的:   建立LCD12864_ST7920的串模式操作库
(0003) 
(0004) 目标系统:   基于AVR单片机
(0005) 
(0006) 应用软件:   ICCAVR
(0007) 
(0008) 版    本:   Version 1.0
(0009) 
(0010) 圆版时间:   2008-05-28
(0011) 
(0012) 开发人员:   hky
(0013) 
(0014) 说    明:   若用于商业用途,请保留此段文字或注明代码来源
(0015) 
(0016) *********************************************************************/
(0017) 
(0018) /*01010101010101010101010101010101010101010101010101010101010101010101
(0019) ----------------------------------------------------------------------
(0020) 版本更新记录:
(0021) 
(0022) ----------------------------------------------------------------------
(0023) 入口参数说明:
(0024) 	//#define OUT_LCD_CS	sbi(DDRD,0)
(0025) 	//#define SET_LCD_CS	sbi(PORTD,0)
(0026) 	//#define CLR_LCD_CS	cbi(PORTD,0)
(0027) 
(0028) ----------------------------------------------------------------------
(0029) 待定参数说明:
(0030) 
(0031) 
(0032) ----------------------------------------------------------------------
(0033) 对外变量说明:
(0034) 
(0035) ----------------------------------------------------------------------
(0036) 对外函数说明:
(0037) 
(0038) ----------------------------------------------------------------------
(0039) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0040) 
(0041) 
(0042) /*--------------------------------------------------------------------
(0043) 接口定义:
(0044) 
(0045) LCD12864_ST7920			ATmega16
(0046) 1.GND		--------	GND
(0047) 2.VCC		--------	VCC
(0048) 3.V0		--------	V0
(0049) 4.RS(CS)	--------	VCC
(0050) 5.R/W(SID)	--------	MOSI/PB5
(0051) 6.E(SCLK)	--------	SCK/PB7
(0052) 7.D0		--------	NC
(0053) 8.D1		--------	NC
(0054) 9.D2		--------	NC
(0055) 10.D3		--------	NC
(0056) 11.D4		--------	NC
(0057) 12.D5		--------	NC
(0058) 13.D6		--------	NC
(0059) 14.D7		--------	NC
(0060) 15.PSB		--------	GND
(0061) 16.NC		--------	NC
(0062) 17.RST		--------	NC
(0063) 18.NC		--------	NC
(0064) 19.LED+		--------	VCC
(0065) 20.LED-		--------	GND
(0066) 
(0067) 说明:
(0068) (1)使用ATmega16的硬件SPI操作LCD12864_ST7920
(0069) (2)PIN4/CS接VCC,其实也可接到特定的IO口,但外部程序需要指定
(0070) --------------------------------------------------------------------*/
(0071) 

⌨️ 快捷键说明

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