?? jb8_io~1.lst
字號:
DD7B 24 16 bcc 0xDD93
(0045) {
DD7D 3F 40 clr *__r0
DD7F B6 5A ldA *_SPI0redata
DD81 AB 4E add #78
DD83 B7 41 stA *__r1
DD85 B6 40 ldA *__r0
DD87 A9 00 adc #0
DD89 B7 40 stA *__r0
DD8B 55 40 ldHX *__r0
DD8D F6 ldA 0,X
DD8E 95 tSX
DD8F B7 59 stA *_SPI0snddata
(0046) SPI0snddata = Card_inform[SPI0redata];
(0047) }
DD91 20 3F bra 0xDDD2
(0048) else if(SPI0redata == 11)
DD93 B6 5A ldA *_SPI0redata
DD95 A1 0B cmp #11
DD97 26 36 bne 0xDDCF
(0049) {
DD99 A6 53 ldA #83
DD9B 87 pshA
DD9C A6 02 ldA #2
DD9E 87 pshA
DD9F CD DE4A jsr _LED_Spark
DDA2 A7 02 aiS #2
DDA4 95 tSX
(0050) LED_Spark(2, 'S'); //運行指示燈短閃爍一次,表明讀卡成功
(0051)
(0052) Card_inform[0]='A';
DDA5 A6 41 ldA #65
DDA7 B7 4E stA *_Card_inform
(0053) for(i = 1; i < 11; i++)
DDA9 A6 01 ldA #1
DDAB B7 5B stA *_i
DDAD 20 15 bra 0xDDC4
(0054) Card_inform[i] = 0;
DDAF 3F 40 clr *__r0
DDB1 B6 5B ldA *_i
DDB3 AB 4E add #78
DDB5 B7 41 stA *__r1
DDB7 B6 40 ldA *__r0
DDB9 A9 00 adc #0
DDBB B7 40 stA *__r0
DDBD 4F clrA
DDBE 55 40 ldHX *__r0
DDC0 F7 stA 0,X
DDC1 95 tSX
DDC2 3C 5B inc *_i
DDC4 B6 5B ldA *_i
DDC6 A1 0B cmp #11
DDC8 25 E5 bcs 0xDDAF
(0055)
(0056) SPI0snddata = Card_inform[0];
DDCA 4E 4E59 mov *_Card_inform,*_SPI0snddata
(0057) }else
DDCD 20 03 bra 0xDDD2
(0058) {
DDCF 4E 4E59 mov *_Card_inform,*_SPI0snddata
(0059) SPI0snddata = Card_inform[0];
(0060) }
DDD2 14 16 Bset 2,0x16
(0061)
(0062) KBSCR |= (1 << 2); //清除鍵盤中斷請求(ACKK = 1)
(0063)
(0064) EnableKBint() ; //開放鍵盤中斷
DDD4 13 16 Bclr 1,0x16
(0065) EnableMCUint(); //開總中斷
DDD6 9A clI
DDD7 86 pulA
DDD8 B7 4D stA *__rlo
DDDA 86 pulA
DDDB B7 4C stA *__rhi
DDDD 86 pulA
DDDE B7 4B stA *__r11
DDE0 86 pulA
DDE1 B7 4A stA *__r10
DDE3 86 pulA
DDE4 B7 49 stA *__r9
DDE6 86 pulA
DDE7 B7 48 stA *__r8
DDE9 86 pulA
DDEA B7 47 stA *__r7
DDEC 86 pulA
DDED B7 46 stA *__r6
DDEF 86 pulA
DDF0 B7 45 stA *__r5
DDF2 86 pulA
DDF3 B7 44 stA *__r4
DDF5 86 pulA
DDF6 B7 43 stA *__r3
DDF8 86 pulA
DDF9 B7 42 stA *__r2
DDFB 86 pulA
DDFC B7 41 stA *__r1
DDFE 86 pulA
DDFF B7 40 stA *__r0
DE01 8A pulH
DE02 80 rti
_isrDummy:
DE03 8B pshH
(0066) }
(0067)
(0068) //未定義的中斷處理函數,本函數不能刪除
(0069) #pragma interrupt_handler isrDummy
(0070) void isrDummy(void)
(0071) {
DE04 8A pulH
DE05 80 rti
_Delay:
i --> X+0
dalayCNT --> X+4
DE06 A7 FE aiS #-2
DE08 95 tSX
FILE: GeneralFun.c
(0001) //[GeneralFun.c]通用函數---------------------------------------------------*
(0002) //本文件包含: *
(0003) // (1)Delay:延時函數 *
(0004) //-------------------------------------------------------------------------*
(0005) #include "GeneralFun.h"
(0006)
(0007) //Delay:延時函數-----------------------------------------------------------*
(0008) //功 能:用程序的方法延時一段時間 *
(0009) //參 數:k = 延時長度(0-65535) *
(0010) //返 回:無 *
(0011) //-------------------------------------------------------------------------*
(0012) void Delay(INT16U dalayCNT)
(0013) {
DE09 6F 01 clr 1,X
DE0B 7F clr 0,X
DE0C 20 0A bra 0xDE18
(0014) INT16U i;
(0015) for(i = 0; i < dalayCNT; i++);
DE0E E6 01 ldA 1,X
DE10 AB 01 add #1
DE12 E7 01 stA 1,X
DE14 F6 ldA 0,X
DE15 A9 00 adc #0
DE17 F7 stA 0,X
DE18 E6 05 ldA 5,X
DE1A B7 41 stA *__r1
DE1C E6 04 ldA 4,X
DE1E B7 40 stA *__r0
DE20 E6 01 ldA 1,X
DE22 B7 43 stA *__r3
DE24 F6 ldA 0,X
DE25 B7 42 stA *__r2
DE27 55 42 ldHX *__r2
DE29 75 40 cpHX *__r0
DE2B 95 tSX
DE2C 25 E0 bcs 0xDE0E
DE2E A7 02 aiS #2
DE30 81 rts
FILE: LED.c
(0001) //[LED.c]小燈驅動----------------------------------------------------------*
(0002) //本文件包含: *
(0003) // (1)LEDinit:小燈控制引腳初始化 *
(0004) // (2)LED_L_A:小燈"亮/暗"控制 *
(0005) //硬件連接: *
(0006) // (1)本處的小燈是一個發光二極管,由MCU的I/O引腳控制 *
(0007) // (2)控制引腳=高電平時,小燈"亮";反之,小燈"暗" *
(0008) //-------------------------------------------------------------------------*
(0009)
(0010) #include "LED.h" //該頭文件中包含了小燈控制引腳定義和相關函數聲明
(0011)
(0012) //LEDinit:定義控制小燈的MCU引腳為輸出--------------------------------------*
(0013) //功能:定義控制小燈的MCU引腳為輸出,并使小燈初始為暗 *
(0014) //參數:無 *
(0015) //返回:無 *
(0016) //-------------------------------------------------------------------------*
(0017) void LEDinit(void)
(0018) {
_LEDinit:
DE31 12 09 Bset 1,0x09
(0019) Light_D |= 1 << Light_Pin; //令小燈引腳為輸出
(0020) Light_P &= ~(1 << Light_Pin); //初始時,小燈"暗"
DE33 13 08 Bclr 1,0x08
DE35 81 rts
_LED_L_A:
flag --> X+2
DE36 95 tSX
(0021) }
(0022)
(0023) //LED_L_A:驅動小燈"亮","暗"------------------------------------------------*
(0024) //功能:根據flag的值控制小燈的亮和暗 *
(0025) //參數:flag(flag = 'A',小燈暗;flag = 'L',小燈亮) *
(0026) //返回:無 *
(0027) //-------------------------------------------------------------------------*
(0028) void LED_L_A(INT8U flag)
(0029) {
DE37 E6 02 ldA 2,X
DE39 A1 4C cmp #76
DE3B 26 04 bne 0xDE41
(0030) if (flag == 'L')
(0031) {
DE3D 12 08 Bset 1,0x08
(0032) Light_P |= 1 << Light_Pin; //小燈"暗"
(0033) }
DE3F 20 08 bra 0xDE49
(0034)
(0035) else if (flag == 'A')
DE41 E6 02 ldA 2,X
DE43 A1 41 cmp #65
DE45 26 02 bne 0xDE49
(0036) {
DE47 13 08 Bclr 1,0x08
(0037) Light_P &= ~(1 << Light_Pin); //小燈"亮"
(0038) }
DE49 81 rts
_LED_Spark:
i --> X+0
interval --> X+1
type --> X+6
num --> X+5
DE4A A7 FD aiS #-3
DE4C 95 tSX
(0039) }
(0040)
(0041) //LED_Spark:驅動小燈閃爍---------------------------------------------------*
(0042) //功能:驅動小燈閃爍 *
(0043) //參數:num - 閃爍次數(小于256),type - 閃爍方式(L:長間隔,S:短間隔) *
(0044) //返回:無 *
(0045) //-------------------------------------------------------------------------*
(0046) void LED_Spark(INT8U num, INT8U type)
(0047) {
DE4D 6F 02 clr 2,X
DE4F 6F 01 clr 1,X
(0048) INT8U i;
(0049) INT16U interval;
(0050)
(0051) //設置時間間隔
(0052) interval = 0;
(0053) if(type == 'L')
DE51 E6 06 ldA 6,X
DE53 A1 4C cmp #76
DE55 26 0A bne 0xDE61
(0054) {
DE57 A6 3A ldA #58
DE59 E7 01 stA 1,X
DE5B A6 98 ldA #-104
DE5D E7 02 stA 2,X
(0055) interval = 15000;
(0056) }
DE5F 20 0E bra 0xDE6F
(0057) else if(type == 'S')
DE61 E6 06 ldA 6,X
DE63 A1 53 cmp #83
DE65 26 08 bne 0xDE6F
(0058) {
DE67 A6 05 ldA #5
DE69 E7 01 stA 1,X
DE6B A6 DC ldA #-36
DE6D E7 02 stA 2,X
(0059) interval = 1500;
(0060) }
DE6F 7F clr 0,X
DE70 20 2A bra 0xDE9C
(0061)
(0062) //閃爍小燈
(0063) for(i = 0; i < num; i++)
(0064) {
DE72 A6 4C ldA #76
DE74 87 pshA
DE75 CD DE36 jsr _LED_L_A
DE78 A7 01 aiS #1
DE7A 95 tSX
(0065) LED_L_A('L');
(0066) Delay(interval);
DE7B E6 02 ldA 2,X
DE7D 87 pshA
DE7E E6 01 ldA 1,X
DE80 87 pshA
DE81 CD DE06 jsr _Delay
DE84 A7 02 aiS #2
(0067) LED_L_A('A');
DE86 A6 41 ldA #65
DE88 87 pshA
DE89 CD DE36 jsr _LED_L_A
DE8C A7 01 aiS #1
DE8E 95 tSX
(0068) Delay(interval);
DE8F E6 02 ldA 2,X
DE91 87 pshA
DE92 E6 01 ldA 1,X
DE94 87 pshA
DE95 CD DE06 jsr _Delay
DE98 A7 02 aiS #2
DE9A 95 tSX
(0069) }
DE9B 7C inc 0,X
DE9C F6 ldA 0,X
DE9D E1 05 cmp 5,X
DE9F 25 D1 bcs 0xDE72
DEA1 A7 03 aiS #3
DEA3 81 rts
FILE: MCUinit.c
(0001) //MCUinit:芯片初始化-------------------------------------------------------*
(0002) //功能:系統初始化設置 *
(0003) // (1)由外部晶振f,通過本程序設置內部總線頻率fBUS *
(0004) // (2)確定是否禁止看門狗(COP) *
(0005) //參數:無 *
(0006) //返回:無 *
(0007) //說明:該程序與芯片具體型號有關 *
(0008) // (1)外部晶振f = 6MHz,使用內部PLL(鎖相環),產生內部總線時鐘頻率 *
(0009) // fBUS = 3MHz *
(0010) // (2)禁止COP模塊 *
(0011) //-------------------------------------------------------------------------*
(0012)
(0013) #include "JB8C.h" //映像寄存器地址頭文件
(0014)
(0015) void MCUinit(void)
(0016) {
_MCUinit:
DEA4 A6 21 ldA #33
DEA6 B7 1F stA 0x1F
(0017) //1 設置CONFIG
(0018) CONFIG = 0b00100001;
(0019) // ||||||_COPD = 1 禁止COP模塊
(0020) // |||||__STOP = 0 禁止STOP指令
(0021) // ||||___COPRS = 0 COP溢出周期
(0022) // |||____SSREC = 0 4096個OSCXCLK周期退出STOP模式
(0023) // ||_____LVID = 0 使能LVI模塊
(0024) // |______URSTD = 1 允許USB復位產生USB中斷請求
(0025)
(0026)
(0027)
(0028) //2.PLL編程
(0029) TSC = 0x00; //(1)禁止PLL:清零PLL控制寄存器PCTL
DEA8 3F 0A clr 0x0A
DEAA 81 rts
FILE: SPI.c
(0001) //[SPI.c]IO模擬SPI---------------------------------------------------------*
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -