?? jb8_io~1.lst
字號(hào):
__start:
__text_start:
DC00 45 0140 ldHX #0x0140
DC03 94 tXS
DC04 CD E5F0 jsr __HC08Setup
DC07 45 004E ldHX #0x004E
DC0A 65 005C cpHX #0x005C
DC0D 27 06 beq 0xDC15
DC0F 6F 00 clr 0,X
DC11 AF 01 aiX #1
DC13 20 F5 bra 0xDC0A
DC15 45 004F ldHX #0x004F
DC18 94 tXS
DC19 45 DC00 ldHX #0xDC00
DC1C 65 DC00 cpHX #0xDC00
DC1F 27 0B beq 0xDC2C
DC21 E6 00 ldA 0,X
DC23 9EE7 00 stA 0,S
DC26 AF 01 aiX #1
DC28 A7 01 aiS #1
DC2A 20 F0 bra 0xDC1C
DC2C 45 0140 ldHX #0x0140
DC2F 94 tXS
DC30 CD DC35 jsr _main
_exit:
DC33 20 FE bra 0xDC33
_main:
JB8_RSTState --> X+0
UIDLen --> X+1
CardB_OK --> X+2
CardA_OK --> X+3
UID --> X+4
i --> X+15
DC35 A7 F0 aiS #-16
DC37 95 tSX
FILE: main.c
(0001) //------------------------------------------------------------------------*
(0002) //工 程 名:JB8_IO_SPI.prj *
(0003) //硬件連接:讀寫模塊為標(biāo)準(zhǔn)DIP40封裝 *
(0004) //說 明: *
(0005) // (1)運(yùn)行指示燈長閃爍3次表示初始化成功 *
(0006) // (2)運(yùn)行指示燈短閃爍1次表示讀卡成功 *
(0007) // (3)UID信息存儲(chǔ)在內(nèi)存中的Card_inform[]數(shù)組中,首字節(jié)表示電子標(biāo)簽類型*
(0008) // (4)外部控制系統(tǒng)通過SPI接口與讀寫模塊通信,每次交互1個(gè)字節(jié)。讀寫模 *
(0009) // 塊作為SPI從機(jī),響應(yīng)SPI主機(jī)的從機(jī)選擇信號(hào),根據(jù)前一次接收的數(shù)據(jù), *
(0010) // 發(fā)送相應(yīng)的讀寫模塊獲取的電子標(biāo)簽UID信息(詳見鍵盤中斷處理函數(shù)) *
(0011) //------------------------------------------------------------------------*
(0012)
(0013) //總頭文件
(0014) #include "Includes.h"
(0015)
(0016) //主函數(shù)
(0017) void main()
(0018) {
DC38 7F clr 0,X
(0019) INT8U JB8_RSTState; //JB8復(fù)位狀態(tài)標(biāo)志位 0-成功 ,1-失敗
(0020) INT8U CardA_OK,CardB_OK;
(0021) INT8U i;
(0022) INT8U UIDLen;
(0023) INT8U UID[11];
(0024)
(0025) JB8_RSTState = 0;
(0026)
(0027) //初始化
(0028) DisableMCUint(); //禁止總中斷
DC39 9B seI
(0029) MCUinit(); //芯片初始化
DC3A CD DEA4 jsr _MCUinit
(0030) LEDinit(); //運(yùn)行指示燈初始化
DC3D CD DE31 jsr _LEDinit
(0031) SPI0Init(); //SPI0初始化(與NE64通信)模擬從機(jī)
DC40 CD DEAB jsr _SPI0Init
(0032) Card_inform[0] = 'A';//UID數(shù)據(jù)數(shù)組,Card_inform[0]:“A”-A卡,“B”-B卡
DC43 A6 41 ldA #65
DC45 B7 4E stA *_Card_inform
(0033) EnableKBint(); //開放鍵盤中斷,響應(yīng)從機(jī)選擇
DC47 13 16 Bclr 1,0x16
(0034) EnableMCUint(); //開總中斷
DC49 9A clI
(0035) LED_Spark(3, 'L'); //運(yùn)行指示燈長閃爍3次,表明初始化成功
DC4A A6 4C ldA #76
DC4C 87 pshA
DC4D A6 03 ldA #3
DC4F 87 pshA
DC50 CD DE4A jsr _LED_Spark
DC53 A7 02 aiS #2
DC55 95 tSX
DC56 CC DD32 jmp 0xDD32
(0036)
(0037) //總循環(huán)
(0038) while (1)
(0039) {
DC59 CD E107 jsr _RFReset
DC5C 95 tSX
DC5D B7 41 stA *__r1
DC5F F7 stA 0,X
(0040) //復(fù)位及初始化RC531
(0041) JB8_RSTState = RFReset();
(0042)
(0043) //ISO14443A 處理部分
(0044) RC531_14443ABInit(1); //按ISO14443A標(biāo)準(zhǔn)設(shè)置相關(guān)寄存器
DC60 A6 01 ldA #1
DC62 87 pshA
DC63 CD E179 jsr _RC531_14443ABInit
DC66 A7 01 aiS #1
DC68 95 tSX
(0045) CardA_OK = ReadTag(1, &UIDLen, UID); //讀TypeA卡
DC69 AF 04 aiX #4
DC6B 89 pshX
DC6C 8B pshH
DC6D 95 tSX
DC6E AF 03 aiX #3
DC70 89 pshX
DC71 8B pshH
DC72 A6 01 ldA #1
DC74 87 pshA
DC75 CD E2CE jsr _ReadTag
DC78 A7 05 aiS #5
DC7A 95 tSX
DC7B B7 41 stA *__r1
DC7D E7 03 stA 3,X
(0046) if(CardA_OK == 0)
DC7F 26 49 bne 0xDCCA
(0047) {
DC81 A6 41 ldA #65
DC83 B7 4E stA *_Card_inform
(0048) //獲取A卡UID成功,并記錄UID信息
(0049) Card_inform[0] = 'A';
(0050) for(i = 0; i < 5; i++)
DC85 6F 0F clr 15,X
DC87 20 2F bra 0xDCB8
(0051) Card_inform[i + 1] = UID[i];
DC89 AF 04 aiX #4
DC8B 35 40 stHX *__r0
DC8D 95 tSX
DC8E 3F 42 clr *__r2
DC90 E6 0F ldA 15,X
DC92 BB 41 add *__r1
DC94 B7 41 stA *__r1
DC96 B6 42 ldA *__r2
DC98 B9 40 adc *__r0
DC9A B7 40 stA *__r0
DC9C 55 40 ldHX *__r0
DC9E F6 ldA 0,X
DC9F 95 tSX
DCA0 B7 41 stA *__r1
DCA2 3F 42 clr *__r2
DCA4 E6 0F ldA 15,X
DCA6 AB 4F add #79
DCA8 B7 43 stA *__r3
DCAA B6 42 ldA *__r2
DCAC A9 00 adc #0
DCAE B7 42 stA *__r2
DCB0 B6 41 ldA *__r1
DCB2 55 42 ldHX *__r2
DCB4 F7 stA 0,X
DCB5 95 tSX
DCB6 6C 0F inc 15,X
DCB8 E6 0F ldA 15,X
DCBA A1 05 cmp #5
DCBC 25 CB bcs 0xDC89
(0052) LED_Spark(1, 'S'); //運(yùn)行指示燈短閃爍一次,表明讀卡成功
DCBE A6 53 ldA #83
DCC0 87 pshA
DCC1 A6 01 ldA #1
DCC3 87 pshA
DCC4 CD DE4A jsr _LED_Spark
DCC7 A7 02 aiS #2
DCC9 95 tSX
(0053) }
DCCA 4F clrA
DCCB 87 pshA
DCCC CD E179 jsr _RC531_14443ABInit
DCCF A7 01 aiS #1
DCD1 95 tSX
(0054)
(0055) //ISO14443B 處理部分
(0056) RC531_14443ABInit(0); //按ISO14443B標(biāo)準(zhǔn)設(shè)置相關(guān)寄存器
(0057) CardB_OK = ReadTag(0, &UIDLen, UID); //讀TypeB卡
DCD2 AF 04 aiX #4
DCD4 89 pshX
DCD5 8B pshH
DCD6 95 tSX
DCD7 AF 03 aiX #3
DCD9 89 pshX
DCDA 8B pshH
DCDB 4F clrA
DCDC 87 pshA
DCDD CD E2CE jsr _ReadTag
DCE0 A7 05 aiS #5
DCE2 95 tSX
DCE3 B7 41 stA *__r1
DCE5 E7 02 stA 2,X
(0058) if(CardB_OK == 0)
DCE7 26 49 bne 0xDD32
(0059) {
DCE9 A6 42 ldA #66
DCEB B7 4E stA *_Card_inform
(0060) //獲取B卡卡號(hào)成功,并記錄UID信息
(0061) Card_inform[0] = 'B';
(0062) for(i = 0; i < 10; i++)
DCED 6F 0F clr 15,X
DCEF 20 2F bra 0xDD20
(0063) Card_inform[i + 1] = UID[i];
DCF1 AF 04 aiX #4
DCF3 35 40 stHX *__r0
DCF5 95 tSX
DCF6 3F 42 clr *__r2
DCF8 E6 0F ldA 15,X
DCFA BB 41 add *__r1
DCFC B7 41 stA *__r1
DCFE B6 42 ldA *__r2
DD00 B9 40 adc *__r0
DD02 B7 40 stA *__r0
DD04 55 40 ldHX *__r0
DD06 F6 ldA 0,X
DD07 95 tSX
DD08 B7 41 stA *__r1
DD0A 3F 42 clr *__r2
DD0C E6 0F ldA 15,X
DD0E AB 4F add #79
DD10 B7 43 stA *__r3
DD12 B6 42 ldA *__r2
DD14 A9 00 adc #0
DD16 B7 42 stA *__r2
DD18 B6 41 ldA *__r1
DD1A 55 42 ldHX *__r2
DD1C F7 stA 0,X
DD1D 95 tSX
DD1E 6C 0F inc 15,X
DD20 E6 0F ldA 15,X
DD22 A1 0A cmp #10
DD24 25 CB bcs 0xDCF1
(0064) LED_Spark(1, 'S'); //運(yùn)行指示燈短閃爍一次,表明讀卡成功
DD26 A6 53 ldA #83
DD28 87 pshA
DD29 A6 01 ldA #1
DD2B 87 pshA
DD2C CD DE4A jsr _LED_Spark
DD2F A7 02 aiS #2
DD31 95 tSX
(0065) }
DD32 CC DC59 jmp 0xDC59
DD35 A7 10 aiS #16
DD37 81 rts
_isrKeyBoard:
DD38 8B pshH
DD39 B6 40 ldA *__r0
DD3B 87 pshA
DD3C B6 41 ldA *__r1
DD3E 87 pshA
DD3F B6 42 ldA *__r2
DD41 87 pshA
DD42 B6 43 ldA *__r3
DD44 87 pshA
DD45 B6 44 ldA *__r4
DD47 87 pshA
DD48 B6 45 ldA *__r5
DD4A 87 pshA
DD4B B6 46 ldA *__r6
DD4D 87 pshA
DD4E B6 47 ldA *__r7
DD50 87 pshA
DD51 B6 48 ldA *__r8
DD53 87 pshA
DD54 B6 49 ldA *__r9
DD56 87 pshA
DD57 B6 4A ldA *__r10
DD59 87 pshA
DD5A B6 4B ldA *__r11
DD5C 87 pshA
DD5D B6 4C ldA *__rhi
DD5F 87 pshA
DD60 B6 4D ldA *__rlo
DD62 87 pshA
FILE: vectors08.c
(0001) //[vectors08.c]用于定義中斷矢量表------------------------------------------*
(0002) //本文件包含: *
(0003) // (1)isrKeyBoard : 鍵盤中斷處理函數(shù)(SPI從機(jī)選擇) *
(0004) // (2)isrDummy : 未定義的中斷處理函數(shù) *
(0005) // (3)中斷矢量表 *
(0006) //-------------------------------------------------------------------------*
(0007) //[頭文件]
(0008) #include "JB8C.H" //JB8映像寄存器名定義
(0009) #include "SPI.h" //SPI函數(shù)頭文件
(0010) #include "Type.h" //類型別名定義
(0011) #include "EnDisInt.h" //開放或禁止MCU各模塊中斷的宏定義
(0012) #include "LED.h" //該頭文件中包含了LED驅(qū)動(dòng)函數(shù)聲明
(0013)
(0014) //變量
(0015) INT8U i;
(0016) INT8U SPI0redata ; //SPI0模塊當(dāng)前接收數(shù)據(jù)
(0017) INT8U SPI0snddata; //SPI0模塊當(dāng)前發(fā)送數(shù)據(jù)
(0018) //外部變量
(0019) extern INT8U Card_inform[11]; //存儲(chǔ)電子標(biāo)簽UID信息
(0020)
(0021) //isrKeyBoard:鍵盤中斷處理函數(shù)---------------------------------------------*
(0022) //功能:響應(yīng)SPI主機(jī)的從機(jī)選擇信號(hào),根據(jù)前一次接收的數(shù)據(jù),發(fā)送相應(yīng)的讀寫模塊 *
(0023) // 獲取的電子標(biāo)簽UID信息 *
(0024) //調(diào)用函數(shù): *
(0025) // (1)DisableMCUint : 關(guān)總中斷 *
(0026) // (2)DisableKBint : 屏蔽鍵盤中斷 *
(0027) // (3)SPI0SLAVECOM : SPI0從機(jī)通信子函數(shù) *
(0028) // (4)EnableKBint : 開放鍵盤中斷 *
(0029) // (5)EnableMCUint : 開總中斷 *
(0030) //-------------------------------------------------------------------------*
(0031) #pragma interrupt_handler isrKeyBoard
(0032) void isrKeyBoard(void)
(0033) {
DD63 9B seI
(0034) //static INT8U SPI0redata ; //SPI0模塊當(dāng)前接收數(shù)據(jù)
(0035) //static INT8U SPI0snddata; //SPI0模塊當(dāng)前發(fā)送數(shù)據(jù)
(0036)
(0037)
(0038) DisableMCUint(); //關(guān)總中斷
(0039) DisableKBint() ; //屏蔽鍵盤中斷
DD64 12 16 Bset 1,0x16
(0040)
(0041) //調(diào)用SPI0從機(jī)通信函數(shù)
(0042) //接收的數(shù)據(jù)為下次要發(fā)送的Card_inform數(shù)組下標(biāo)值
(0043) SPI0redata = SPI0SLAVECOM(SPI0snddata);
DD66 B6 59 ldA *_SPI0snddata
DD68 87 pshA
DD69 CD DEBA jsr _SPI0SLAVECOM
DD6C A7 01 aiS #1
DD6E 95 tSX
DD6F B7 5A stA *_SPI0redata
(0044) if((SPI0redata >= 0) && (SPI0redata < 11))
DD71 B6 5A ldA *_SPI0redata
DD73 A1 00 cmp #0
DD75 25 1C bcs 0xDD93
DD77 B6 5A ldA *_SPI0redata
DD79 A1 0B cmp #11
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
減小字號(hào)
Ctrl + -