📄 vectors08.lis
字号:
.module vectors08.c
.area text
0000 .dbfile vectors08.c
0000 .dbfunc e isrKeyBoard _isrKeyBoard fV
0000 _isrKeyBoard::
0000 .dbline -1
0000 8B pshh
0001 B600 lda *__r0
0003 87 psha
0004 B600 lda *__r1
0006 87 psha
0007 B600 lda *__r2
0009 87 psha
000A B600 lda *__r3
000C 87 psha
000D B600 lda *__r4
000F 87 psha
0010 B600 lda *__r5
0012 87 psha
0013 B600 lda *__r6
0015 87 psha
0016 B600 lda *__r7
0018 87 psha
0019 B600 lda *__r8
001B 87 psha
001C B600 lda *__r9
001E 87 psha
001F B600 lda *__r10
0021 87 psha
0022 B600 lda *__r11
0024 87 psha
0025 B600 lda *__rhi
0027 87 psha
0028 B600 lda *__rlo
002A 87 psha
002B .dbline 33
002B ; //[vectors08.c]用于定义中断矢量表------------------------------------------*
002B ; //本文件包含: *
002B ; // (1)isrKeyBoard : 键盘中断处理函数(SPI从机选择) *
002B ; // (2)isrDummy : 未定义的中断处理函数 *
002B ; // (3)中断矢量表 *
002B ; //-------------------------------------------------------------------------*
002B ; //[头文件]
002B ; #include "JB8C.H" //JB8映像寄存器名定义
002B ; #include "SPI.h" //SPI函数头文件
002B ; #include "Type.h" //类型别名定义
002B ; #include "EnDisInt.h" //开放或禁止MCU各模块中断的宏定义
002B ; #include "LED.h" //该头文件中包含了LED驱动函数声明
002B ;
002B ; //变量
002B ; INT8U i;
002B ; INT8U SPI0redata ; //SPI0模块当前接收数据
002B ; INT8U SPI0snddata; //SPI0模块当前发送数据
002B ; //外部变量
002B ; extern INT8U Card_inform[11]; //存储电子标签UID信息
002B ;
002B ; //isrKeyBoard:键盘中断处理函数---------------------------------------------*
002B ; //功能:响应SPI主机的从机选择信号,根据前一次接收的数据,发送相应的读写模块 *
002B ; // 获取的电子标签UID信息 *
002B ; //调用函数: *
002B ; // (1)DisableMCUint : 关总中断 *
002B ; // (2)DisableKBint : 屏蔽键盘中断 *
002B ; // (3)SPI0SLAVECOM : SPI0从机通信子函数 *
002B ; // (4)EnableKBint : 开放键盘中断 *
002B ; // (5)EnableMCUint : 开总中断 *
002B ; //-------------------------------------------------------------------------*
002B ; #pragma interrupt_handler isrKeyBoard
002B ; void isrKeyBoard(void)
002B ; {
002B .dbline 38
002B ; //static INT8U SPI0redata ; //SPI0模块当前接收数据
002B ; //static INT8U SPI0snddata; //SPI0模块当前发送数据
002B ;
002B ;
002B ; DisableMCUint(); //关总中断
002B 9B SEI
002C .dbline 39
002C ; DisableKBint() ; //屏蔽键盘中断
002C 1216 bset #1,0x16
002E .dbline 43
002E ;
002E ; //调用SPI0从机通信函数
002E ; //接收的数据为下次要发送的Card_inform数组下标值
002E ; SPI0redata = SPI0SLAVECOM(SPI0snddata);
002E B600 lda *_SPI0snddata
0030 87 psha
0031 CD0000 jsr _SPI0SLAVECOM
0034 A701 ais #1
0036 95 tsx
0037 B701 sta *_SPI0redata
0039 .dbline 44
0039 ; if((SPI0redata >= 0) && (SPI0redata < 11))
0039 B601 lda *_SPI0redata
003B A100 cmp #0
003D 251C blo L2
003F B601 lda *_SPI0redata
0041 A10B cmp #11
0043 2416 bhs L2
0045 .dbline 45
0045 ; {
0045 .dbline 46
0045 ; SPI0snddata = Card_inform[SPI0redata];
0045 3F00 clr *__r0
0047 B601 lda *_SPI0redata
0049 AB00 add #<_Card_inform
004B B700 sta *__r1
004D B600 lda *__r0
004F A900 adc #>_Card_inform
0051 B700 sta *__r0
0053 5500 ldhx *__r0
0055 F6 lda ,x
0056 95 tsx
0057 B700 sta *_SPI0snddata
0059 .dbline 47
0059 ; }
0059 203F bra L3
005B L2:
005B .dbline 48
005B ; else if(SPI0redata == 11)
005B B601 lda *_SPI0redata
005D A10B cmp #11
005F 2636 bne L4
0061 .dbline 49
0061 ; {
0061 .dbline 50
0061 ; LED_Spark(2, 'S'); //运行指示灯短闪烁一次,表明读卡成功
0061 A653 lda #83
0063 87 psha
0064 A602 lda #2
0066 87 psha
0067 CD0000 jsr _LED_Spark
006A A702 ais #2
006C 95 tsx
006D .dbline 52
006D ;
006D ; Card_inform[0]='A';
006D A641 lda #65
006F B700 sta *_Card_inform
0071 .dbline 53
0071 ; for(i = 1; i < 11; i++)
0071 A601 lda #1
0073 B702 sta *_i
0075 2015 bra L9
0077 L6:
0077 .dbline 54
0077 3F00 clr *__r0
0079 B602 lda *_i
007B AB00 add #<_Card_inform
007D B700 sta *__r1
007F B600 lda *__r0
0081 A900 adc #>_Card_inform
0083 B700 sta *__r0
0085 4F clra
0086 5500 ldhx *__r0
0088 F7 sta ,x
0089 95 tsx
008A L7:
008A .dbline 53
008A 3C02 inc *_i
008C L9:
008C .dbline 53
008C B602 lda *_i
008E A10B cmp #11
0090 25E5 blo L6
0092 .dbline 56
0092 ; Card_inform[i] = 0;
0092 ;
0092 ; SPI0snddata = Card_inform[0];
0092 4E0000 mov *_Card_inform,*_SPI0snddata
0095 .dbline 57
0095 ; }else
0095 2003 bra L5
0097 L4:
0097 .dbline 58
0097 ; {
0097 .dbline 59
0097 ; SPI0snddata = Card_inform[0];
0097 4E0000 mov *_Card_inform,*_SPI0snddata
009A .dbline 60
009A ; }
009A L5:
009A L3:
009A .dbline 62
009A ;
009A ; KBSCR |= (1 << 2); //清除键盘中断请求(ACKK = 1)
009A 1416 bset #2,0x16
009C .dbline 64
009C ;
009C ; EnableKBint() ; //开放键盘中断
009C 1316 bclr #1,0x16
009E .dbline 65
009E ; EnableMCUint(); //开总中断
009E 9A CLI
009F .dbline -2
009F L1:
009F .dbline 0 ; func end
009F 86 pula
00A0 B700 sta *__rlo
00A2 86 pula
00A3 B700 sta *__rhi
00A5 86 pula
00A6 B700 sta *__r11
00A8 86 pula
00A9 B700 sta *__r10
00AB 86 pula
00AC B700 sta *__r9
00AE 86 pula
00AF B700 sta *__r8
00B1 86 pula
00B2 B700 sta *__r7
00B4 86 pula
00B5 B700 sta *__r6
00B7 86 pula
00B8 B700 sta *__r5
00BA 86 pula
00BB B700 sta *__r4
00BD 86 pula
00BE B700 sta *__r3
00C0 86 pula
00C1 B700 sta *__r2
00C3 86 pula
00C4 B700 sta *__r1
00C6 86 pula
00C7 B700 sta *__r0
00C9 8A pulh
00CA 80 rti
00CB .dbend
00CB .dbfunc e isrDummy _isrDummy fV
00CB _isrDummy::
00CB .dbline -1
00CB 8B pshh
00CC .dbline 71
00CC ; }
00CC ;
00CC ; //未定义的中断处理函数,本函数不能删除
00CC ; #pragma interrupt_handler isrDummy
00CC ; void isrDummy(void)
00CC ; {
00CC .dbline -2
00CC L10:
00CC .dbline 0 ; func end
00CC 8A pulh
00CD 80 rti
00CE .dbend
.area memory(abs)
.org 0xfff0
FFF0 .dbfile vectors08.c
FFF0 __vectab::
FFF0 0000 .word _isrKeyBoard
FFF2 00CB .word _isrDummy
FFF4 00CB .word _isrDummy
FFF6 00CB .word _isrDummy
FFF8 00CB .word _isrDummy
FFFA 00CB .word _isrDummy
FFFC 00CB .word _isrDummy
FFFE .dbsym e _vectab __vectab A[14:7]pfV
.area lit
.area bss
0000 .dbfile vectors08.c
0000 _SPI0snddata::
0000 .blkb 1
0001 .dbsym e SPI0snddata _SPI0snddata c
0001 _SPI0redata::
0001 .blkb 1
0002 .dbsym e SPI0redata _SPI0redata c
0002 _i::
0002 .blkb 1
0003 .dbsym e i _i c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -