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

📄 main.s

📁 使用RC531读卡芯片读取二代身份证的模块软件设计部分
💻 S
字号:
	.module main.c
	.area text
	.dbfile main.c
	.dbfunc e main _main fV
;   JB8_RSTState -> 0,X
;         UIDLen -> 1,X
;       CardB_OK -> 2,X
;       CardA_OK -> 3,X
;            UID -> 4,X
;              i -> 15,X
_main::
	.dbline -1
	ais #-16
	tsx
	.dbline 18
; //------------------------------------------------------------------------*
; //工 程 名:JB8_IO_SPI.prj                                                 *
; //硬件连接:读写模块为标准DIP40封装                                        *
; //说    明:                                                               *
; //      (1)运行指示灯长闪烁3次表示初始化成功                              *
; //      (2)运行指示灯短闪烁1次表示读卡成功                                *
; //      (3)UID信息存储在内存中的Card_inform[]数组中,首字节表示电子标签类型*
; //      (4)外部控制系统通过SPI接口与读写模块通信,每次交互1个字节。读写模  *
; //         块作为SPI从机,响应SPI主机的从机选择信号,根据前一次接收的数据, *
; //         发送相应的读写模块获取的电子标签UID信息(详见键盘中断处理函数)  *
; //------------------------------------------------------------------------*
; 
; //总头文件
; #include "Includes.h"
; 
; //主函数
; void main()
; {
	.dbline 25
;     INT8U JB8_RSTState;         //JB8复位状态标志位 0-成功 ,1-失败
;     INT8U CardA_OK,CardB_OK;
;     INT8U i;
;     INT8U UIDLen;
;     INT8U UID[11];
;     
;     JB8_RSTState = 0;
	clr ,X
	.dbline 28
;     
;     //初始化
;     DisableMCUint();     //禁止总中断    
	SEI
	.dbline 29
;     MCUinit();           //芯片初始化
	jsr _MCUinit
	.dbline 30
;     LEDinit();           //运行指示灯初始化
	jsr _LEDinit
	.dbline 31
;     SPI0Init();          //SPI0初始化(与NE64通信)模拟从机    
	jsr _SPI0Init
	.dbline 32
;     Card_inform[0] = 'A';//UID数据数组,Card_inform[0]:“A”-A卡,“B”-B卡 
	lda #65
	sta *_Card_inform
	.dbline 33
;     EnableKBint();       //开放键盘中断,响应从机选择   
	bclr #1,0x16
	.dbline 34
;     EnableMCUint();      //开总中断
	CLI
	.dbline 35
;     LED_Spark(3, 'L');   //运行指示灯长闪烁3次,表明初始化成功
	lda #76
	psha
	lda #3
	psha
	jsr _LED_Spark
	ais #2
	tsx
	jmp L3
L2:
	.dbline 39
;     
;     //总循环
;     while (1)
;     {
	.dbline 41
;         //复位及初始化RC531
;         JB8_RSTState = RFReset();    
	jsr _RFReset
	tsx
	sta *__r1
	sta ,X
	.dbline 44
; 		
;         //ISO14443A 处理部分
; 		RC531_14443ABInit(1);                //按ISO14443A标准设置相关寄存器	 
	lda #1
	psha
	jsr _RC531_14443ABInit
	ais #1
	tsx
	.dbline 45
; 		CardA_OK = ReadTag(1, &UIDLen, UID); //读TypeA卡
	aix #4
	pshx
	pshh
	tsx
	aix #3
	pshx
	pshh
	lda #1
	psha
	jsr _ReadTag
	ais #5
	tsx
	sta *__r1
	sta 3,X
	.dbline 46
; 		if(CardA_OK == 0)
	bne L5
	.dbline 47
; 		{
	.dbline 49
; 		    //获取A卡UID成功,并记录UID信息
; 		    Card_inform[0] = 'A';
	lda #65
	sta *_Card_inform
	.dbline 50
; 		    for(i = 0; i < 5; i++)
	clr 15,X
	bra L10
L7:
	.dbline 51
	aix #4
	sthx *__r0
	tsx
	clr *__r2
	lda 15,X
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	clr *__r2
	lda 15,X
	add #<_Card_inform+1
	sta *__r3
	lda *__r2
	adc #>_Card_inform+1
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L8:
	.dbline 50
	inc 15,X
L10:
	.dbline 50
	lda 15,X
	cmp #5
	blo L7
	.dbline 52
; 		        Card_inform[i + 1] = UID[i];
;             LED_Spark(1, 'S');               //运行指示灯短闪烁一次,表明读卡成功
	lda #83
	psha
	lda #1
	psha
	jsr _LED_Spark
	ais #2
	tsx
	.dbline 53
; 		}
L5:
	.dbline 56
; 		
;         //ISO14443B 处理部分      
; 		RC531_14443ABInit(0);                //按ISO14443B标准设置相关寄存器	 
	clra
	psha
	jsr _RC531_14443ABInit
	ais #1
	tsx
	.dbline 57
; 		CardB_OK = ReadTag(0, &UIDLen, UID); //读TypeB卡				
	aix #4
	pshx
	pshh
	tsx
	aix #3
	pshx
	pshh
	clra
	psha
	jsr _ReadTag
	ais #5
	tsx
	sta *__r1
	sta 2,X
	.dbline 58
; 		if(CardB_OK == 0)
	bne L12
	.dbline 59
; 		{
	.dbline 61
; 		    //获取B卡卡号成功,并记录UID信息
; 		    Card_inform[0] = 'B';
	lda #66
	sta *_Card_inform
	.dbline 62
; 		    for(i = 0; i < 10; i++)
	clr 15,X
	bra L17
L14:
	.dbline 63
	aix #4
	sthx *__r0
	tsx
	clr *__r2
	lda 15,X
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	clr *__r2
	lda 15,X
	add #<_Card_inform+1
	sta *__r3
	lda *__r2
	adc #>_Card_inform+1
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L15:
	.dbline 62
	inc 15,X
L17:
	.dbline 62
	lda 15,X
	cmp #10
	blo L14
	.dbline 64
; 		        Card_inform[i + 1] = UID[i];
;             LED_Spark(1, 'S');               //运行指示灯短闪烁一次,表明读卡成功
	lda #83
	psha
	lda #1
	psha
	jsr _LED_Spark
	ais #2
	tsx
	.dbline 65
; 		}					
L12:
	.dbline 66
L3:
	.dbline 38
	jmp L2
X0:
	.dbline -2
L1:
	ais #16
	.dbline 0 ; func end
	rts
	.dbsym l JB8_RSTState 0 c
	.dbsym l UIDLen 1 c
	.dbsym l CardB_OK 2 c
	.dbsym l CardA_OK 3 c
	.dbsym l UID 4 A[11:11]c
	.dbsym l i 15 c
	.dbend
	.area bss
	.dbfile main.c
_Card_inform::
	.blkb 11
	.dbfile D:\项目\RC531读写模块\03软件设计\0508\JB8\JB8_NE64_RC531/Includes.h
	.dbsym e Card_inform _Card_inform A[11:11]c

⌨️ 快捷键说明

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