基于MSP430单片机的CPU卡模板程序(二)

发布者:量子启示最新更新时间:2021-03-11 来源: eefocus关键字:MSP430  单片机  CPU卡  模板程序 手机看文章 扫描二维码
随时随地手机看文章

;**************************************

1.发命令,接收响应数据

;向IC卡/SAM模块发命令,并从IC卡/SAM模块接收响应数据,放入数据缓存区COMDATABUF


;若执行成功C=0,接收到的数据及长度在COMDATABUF格式为:长度+数据+SW1SW2


;**************************************


COMMAND:


MOV#CLA,BX


MOV.B#5,RESETCNT//命令个数


CALL#SEND_COMMAND//发送5个命令报头


BIT.B#C,SR//判断发送是否正确


JnzCOM_ERR


CALL#RECCHAR//接收从卡/ESAM来的返回INS


BIT.B#C,SR


JNZCOM_ERR


MOV#REINS,BX


MOV.Btrdata,0(BX)


CMP.B#5,COMMANDLEN


JNZCOM_NEXTCOM//发后续数据




MOV.bLCLE,RESETCNT//接收从卡/ESAM来的数据


MOV#COMDATABUF,BX


COM_NEXTDATA:


CALL#RECCHAR


MOV.Btrdata,0(BX)


INCBX


BIT.B#C,SR


JNZCOM_ERR//=1,ERR


DEC.BRESETCNT


JNZCOM_NEXTDATA


COM_RECSWCH:


MOV#SWCH1,BX//RECEIVESWCH1ANDSWCH2


CALL#RECCHAR


BIT.B#C,SR


JNZCOM_ERR


MOV.Btrdata,0(BX)


MOV#SWCH2,BX


CALL#RECCHAR


BIT.B#C,SR


JNZCOM_ERR


MOV.Btrdata,0(BX)


JMPCOM_OUT


COM_NEXTCOM:


CALL#DELAY05ETU


MOV.BLCLE,RESETCNT


MOV#DATABUF,BX


CALL#SEND_COMMAND


JMPCOM_RECSWCH


COM_ERR:


BIS.B#CARDPRO_ERR


COM_OUT:


RET




;**************************************

2.;取8字节随机数命令串

;**************************************




GET_rannum://取随机数


MOV.B#05,COMMANDLEN


MOV.B#00,CLA


MOV.B#84H,INS


MOV.B#00,P1


MOV.B#00,P2


MOV.B#16,LCLE


RET


;**************************************

3.;读二进制文件命令串

;**************************************


read_b://读二进制文件


MOV.B#05,COMMANDLEN


MOV.B#00,CLA


MOV.B#0b0H,INS


MOV.B#81H,P1


MOV.B#00H,P2


MOV.B#08,LCLE


RET


;**************************************

4.;写二进制文件命令串

;**************************************


WRITE_B://写二进制文件


MOV.B#13,COMMANDLEN


MOV.B#00,CLA


MOV.B#0D0H,INS


MOV.B#81H,P1


MOV.B#00H,P2


MOV.B#08,LCLE


RET


;**************************************


关键字:MSP430  单片机  CPU卡  模板程序 引用地址:基于MSP430单片机的CPU卡模板程序(二)

上一篇:兼容标准的高功率PoE系统设计
下一篇:MSP430单片机定时器面面观

推荐阅读最新更新时间:2024-11-11 15:05

PIC16F877A单片机SPI学习
PIR1 Register The PIR1 register contains the individual flag bits for the peripheral interrupts. PIR1 REGISTER PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF SSPIF:Synchronous Serial Port Interrupt Flag bit 1 = The SSP interrupt condition has occurred and must be cleared in software before returning from the int
[单片机]
于十天学会AVR单片机的教程头文件
最近开始学习AVR单片机,由于之前买的51开发板是兼容AVR单片机的,所以就没有必要开发板了。于是从网上找了一个教程《十天学会AVR单片机》,也是郭天祥公司的人讲的,觉得还可以。因为没有买开发板,所以没有AVR_PQ1A.h这个头文件,这头文件定义了寄存器等,非常好用,所以有必要下下来解读。 /* 文件:AVR_PQ1A.H 功能:定义一些AVR_PQ1A开发板上应用程序用到的常量 // #include iom16v.h //包含型号头文件 #include macros.h //包含 位 操作头文件 /数据类型宏定义/ #define uchar unsigned char #define uint unsigned
[单片机]
PIC16F877A单片机 (IIC总线+PCF8563芯片)
1 基本原理 1.1 IIC总线 见前面内容PIC16F877A单片机 (IIC总线+AT24C02芯片) 1.2 PCF8563芯片 可以看出,PCF8563芯片一共有16个寄存器。也就是该芯片的内部地址最大为0x0f。上述的16个寄存器除了作为普通的存储功能外,还具备授时功能。 2 实现过程 2.1 电路图 2.2 源代码 /*---------------------函数功能: IIC总线 + PCF8563(内部只有16个地址空间 PCF8563芯片一共有16个寄存器。也就是该芯片的内部地址最大为0x0f。 上述的16个寄存器除了作为普通的存储功能外,还具备授时功能。 ------------
[单片机]
PIC16F877A<font color='red'>单片机</font> (IIC总线+PCF8563芯片)
教你学单片机 2:用机器的视角思考
你准备写第一个单片机程序了,在此之前我假设你已经会使用编译器,也会下载程序了。 P.S. 因为这些工作确实很简单,在网上找份教程看看就会了。 一般刚开始学一种单片机的时候,写的第一个程序都是 点亮第一个LED 。这个程序很经典,它代表你已经成功学会操控单片机的IO端口,学51单片机亦是如此。代码如下(我使用ATMEL 公司的AT89S52): #include reg52.h sbit LED = P1^0 ; void Delay(unsigned int t) { unsigned int i,j ; for(i=t;i 0;i--) for(j=100;j 0;j--); }
[单片机]
PIC单片机的各种汇编语言指令的用法解析
工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。 PIC的指令系统 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号 操作码助记符 操作数1,操作数2;注释
[单片机]
PIC<font color='red'>单片机</font>的各种汇编语言指令的用法解析
8051单片机中的寄存器是算CPU还是RAM
问题:单片机8051中的一些寄存器到底算CPU的还是RAM的? 请高手指点,像累加器DPTR,A,PSW等一些寄存器是属于CPU的,但书上又说他们都属于RAM中的特殊功能寄存器(SFR),这是什么道理? 另外,存储器和寄存器不是两个功能,结构都不同的东西么?为什么RAM中存在许多寄存器组,即二者在此是相同的? 综合理解:有以下几种可能: 1、CPU是一个抽象的概念,如同操作系统这个概念一样没有明确的界线;(cpu是由人划分出来的一块区域不明确) 2、CPU这个概念不适用与51; 3、51可以划分CPU和RAM部分,但CPU和RAM有交叉的部分(比如寄存器组等) 4、CPU部分寄存器是和RAM统一编址,访问该RAM地址即等于
[单片机]
单片机串口发送数据帧
很少看到有资料写如何以中断的方式发送一帧数据,如果以等待的发送数据帧,对高速运行的单片机来说是很浪费时间的,下面就介绍一种使用中断方式发送数据帧,操作平台采用51 mcu 首先定义一个数据帧的结构体,该结构体可以做为一个全局变量,所有的发送都要经过这个结构体: //结构体 struct { char busy_falg;//忙标志,若在发送数据时置位1,即在开始发送置位1,发送结束置位0 int index;//索引,指向需要发送数组的位置 int length;//整个数据帧的长度 char *buf;//指向需要发送的数据帧,建议为全局变量,否则一旦开始发送,必须等到发送结束,即判断bus
[单片机]
STM8S105K6T6单片机的IIC配置问题
最近在用MCP3421,需要用到IIC接口。MCU用的是STM8S105K6T6。使用MCU内部的IIC外设,这个接口配置折腾一下午,遇到了很坑爹的事情。我使用的是寄存器开发的,该设置了感觉都设置好了,就是不能工作。后来以为没配置好,又用库函数来开发,妈的 ,还是不能工作。后来在群里的一位大神的指导下成功的调通了IIC。 闲话有点多,毕竟是我第一次开通博客来写博客的,心情不免有些激动。现在把经验分享给不知道的小伙伴们,少走些弯路。 在使用STM8S105K6T6的IIC前,必须先通过STVP这个软件来进行配置。 这三个步骤是最重要的,当然还需要选择单片机的下载模式,型号什么的,这个不是本文的重点。特别要强调一点,步骤二
[单片机]
STM8S105K6T6<font color='red'>单片机</font>的IIC配置问题
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved