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

📄 jb8_io~1.lst

📁 使用RC531读卡芯片读取二代身份证的模块软件设计部分
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -