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

📄 vectors08.s

📁 使用RC531读卡芯片读取二代身份证的模块软件设计部分
💻 S
字号:
	.module vectors08.c
	.area text
	.dbfile vectors08.c
	.dbfunc e isrKeyBoard _isrKeyBoard fV
_isrKeyBoard::
	.dbline -1
	pshh
	lda *__r0
	psha
	lda *__r1
	psha
	lda *__r2
	psha
	lda *__r3
	psha
	lda *__r4
	psha
	lda *__r5
	psha
	lda *__r6
	psha
	lda *__r7
	psha
	lda *__r8
	psha
	lda *__r9
	psha
	lda *__r10
	psha
	lda *__r11
	psha
	lda *__rhi
	psha
	lda *__rlo
	psha
	.dbline 33
; //[vectors08.c]用于定义中断矢量表------------------------------------------*
; //本文件包含:                                                              *
; //    (1)isrKeyBoard   : 键盘中断处理函数(SPI从机选择)                     *
; //    (2)isrDummy      : 未定义的中断处理函数                              *
; //    (3)中断矢量表                                                        *
; //-------------------------------------------------------------------------*
; //[头文件]
; #include "JB8C.H"        //JB8映像寄存器名定义
; #include "SPI.h"         //SPI函数头文件
; #include "Type.h"        //类型别名定义
; #include "EnDisInt.h"    //开放或禁止MCU各模块中断的宏定义
; #include "LED.h"         //该头文件中包含了LED驱动函数声明
; 
; //变量
; INT8U i;
; INT8U SPI0redata ;       //SPI0模块当前接收数据    
; INT8U SPI0snddata;       //SPI0模块当前发送数据
; //外部变量
; extern   INT8U Card_inform[11];    //存储电子标签UID信息
;  
; //isrKeyBoard:键盘中断处理函数---------------------------------------------*
; //功能:响应SPI主机的从机选择信号,根据前一次接收的数据,发送相应的读写模块 *
; //     获取的电子标签UID信息                                               *
; //调用函数:                                                                *
; //    (1)DisableMCUint : 关总中断                                          *
; //    (2)DisableKBint  : 屏蔽键盘中断                                      *
; //    (3)SPI0SLAVECOM  : SPI0从机通信子函数                                *
; //    (4)EnableKBint   : 开放键盘中断                                      *
; //    (5)EnableMCUint  : 开总中断                                          *
; //-------------------------------------------------------------------------*
; #pragma interrupt_handler isrKeyBoard
; void isrKeyBoard(void)  
; {
	.dbline 38
;     //static INT8U SPI0redata ;    //SPI0模块当前接收数据    
;     //static INT8U SPI0snddata;    //SPI0模块当前发送数据
;     
;     
;     DisableMCUint();    //关总中断
	SEI
	.dbline 39
;     DisableKBint() ;    //屏蔽键盘中断
	bset #1,0x16
	.dbline 43
; 
;     //调用SPI0从机通信函数
;     //接收的数据为下次要发送的Card_inform数组下标值
;     SPI0redata = SPI0SLAVECOM(SPI0snddata);
	lda *_SPI0snddata
	psha
	jsr _SPI0SLAVECOM
	ais #1
	tsx
	sta *_SPI0redata
	.dbline 44
;     if((SPI0redata >= 0) && (SPI0redata < 11))
	lda *_SPI0redata
	cmp #0
	blo L2
	lda *_SPI0redata
	cmp #11
	bhs L2
	.dbline 45
;     {
	.dbline 46
;         SPI0snddata = Card_inform[SPI0redata];
	clr *__r0
	lda *_SPI0redata
	add #<_Card_inform
	sta *__r1
	lda *__r0
	adc #>_Card_inform
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *_SPI0snddata
	.dbline 47
;     }
	bra L3
L2:
	.dbline 48
;     else if(SPI0redata == 11)
	lda *_SPI0redata
	cmp #11
	bne L4
	.dbline 49
;     {
	.dbline 50
;         LED_Spark(2, 'S');               //运行指示灯短闪烁一次,表明读卡成功
	lda #83
	psha
	lda #2
	psha
	jsr _LED_Spark
	ais #2
	tsx
	.dbline 52
;        
;         Card_inform[0]='A';
	lda #65
	sta *_Card_inform
	.dbline 53
;         for(i = 1; i < 11; i++)
	lda #1
	sta *_i
	bra L9
L6:
	.dbline 54
	clr *__r0
	lda *_i
	add #<_Card_inform
	sta *__r1
	lda *__r0
	adc #>_Card_inform
	sta *__r0
	clra
	ldhx *__r0
	sta ,x
	tsx
L7:
	.dbline 53
	inc *_i
L9:
	.dbline 53
	lda *_i
	cmp #11
	blo L6
	.dbline 56
;             Card_inform[i] = 0;
;         
;         SPI0snddata = Card_inform[0];
	mov *_Card_inform,*_SPI0snddata
	.dbline 57
;     }else
	bra L5
L4:
	.dbline 58
;     {
	.dbline 59
;         SPI0snddata = Card_inform[0];
	mov *_Card_inform,*_SPI0snddata
	.dbline 60
;     }
L5:
L3:
	.dbline 62
;     
;     KBSCR |= (1 << 2);  //清除键盘中断请求(ACKK = 1)
	bset #2,0x16
	.dbline 64
;  
;     EnableKBint() ;     //开放键盘中断
	bclr #1,0x16
	.dbline 65
;     EnableMCUint();     //开总中断
	CLI
	.dbline -2
L1:
	.dbline 0 ; func end
	pula
	sta *__rlo
	pula
	sta *__rhi
	pula
	sta *__r11
	pula
	sta *__r10
	pula
	sta *__r9
	pula
	sta *__r8
	pula
	sta *__r7
	pula
	sta *__r6
	pula
	sta *__r5
	pula
	sta *__r4
	pula
	sta *__r3
	pula
	sta *__r2
	pula
	sta *__r1
	pula
	sta *__r0
	pulh
	rti
	.dbend
	.dbfunc e isrDummy _isrDummy fV
_isrDummy::
	.dbline -1
	pshh
	.dbline 71
; }
; 
; //未定义的中断处理函数,本函数不能删除
; #pragma interrupt_handler isrDummy  
; void isrDummy(void) 
; {
	.dbline -2
L10:
	.dbline 0 ; func end
	pulh
	rti
	.dbend
	.area memory(abs)
	.org 0xfff0
	.dbfile vectors08.c
__vectab::
	.word _isrKeyBoard
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.dbsym e _vectab __vectab A[14:7]pfV
	.area lit
	.area bss
	.dbfile vectors08.c
_SPI0snddata::
	.blkb 1
	.dbsym e SPI0snddata _SPI0snddata c
_SPI0redata::
	.blkb 1
	.dbsym e SPI0redata _SPI0redata c
_i::
	.blkb 1
	.dbsym e i _i c

⌨️ 快捷键说明

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