EM78P915-SIM-transplant

所属分类:单片机开发
开发工具:Windows_Unix
文件大小:87KB
下载次数:8
上传日期:2013-10-07 11:49:13
上 传 者jiangtianone
说明:  SIM卡电话本读写方案,了解SIM文件系统和外部接口的实战方案,采用EMC915芯片实现。
(SIM card phone book reader program, to understand SIM file system and the external interface of practical solutions, using EMC915 chip.)

文件列表:
915\sim_915.prj (949, 2007-07-30)
915\SYSINIT.lst (1916, 2007-07-28)
915\ATR.lst (5890, 2007-07-30)
915\SIM_INIT.lst (6405, 2007-07-30)
915\HARDWARE.lst (5000, 2007-07-28)
915\SIM_UART.lst (14071, 2007-07-30)
915\TRANSP.lst (21127, 2007-07-23)
915\SIM_PTS.asm (1327, 2007-07-30)
915\SELPHO.lst (8004, 2007-07-23)
915\SelPho.ASM (1872, 2007-07-30)
915\PIN.lst (2484, 2007-07-24)
915\PIN.asm (828, 2007-07-30)
915\READPHO.lst (8277, 2007-07-24)
915\ReadPho.ASM (2423, 2007-07-30)
915\func_tab.asm (2645, 2007-07-30)
915\ucs2uni.asm (5176, 2007-07-30)
915\UCS2UNI.lst (16593, 2007-07-24)
915\WritePho.asm (1857, 2007-07-30)
915\Transp.asm (6923, 2007-07-30)
915\SelDir.ASM (1578, 2007-07-30)
915\define.h (1169, 2007-07-25)
915\SysInit.asm (1108, 2007-07-30)
915\SimMacro.h (423, 2007-07-30)
915\Common.asm (1244, 2007-07-30)
915\Hardware.asm (2903, 2007-07-30)
915\ATR.ASM (2664, 2007-07-30)
915\sim_def.h (3043, 2007-07-30)
915\SIM_INIT.asm (2423, 2007-07-30)
915\SIM_MCU.H (2103, 2007-07-28)
915\SIM_UART.asm (7134, 2007-07-30)
915\main.asm (6717, 2007-07-30)
915\MAIN.lst (117816, 2007-07-30)
915\MAIN.bbj (24539, 2007-07-30)
915\sim_915.map (173, 2007-07-30)
915\sim_915.cds (65559, 2007-07-30)
915\sim_915.deg (20866, 2007-07-30)
915\backup_sim_uart_2m372.dt (0, 2007-07-30)
915\backup_sim_uart_fm372.dt (8196, 2007-07-30)
915\EMCMacro.H.bak (439, 2007-07-30)
... ...

说明文档 ************************************************************************************** 概述: 支持ISO7816-1,2,3,4和GSM07.07,GSM11.11,GSM11.12和GSM11.14 支持智能卡正向和反向T=0协议; 优化的智能卡硬件接口时序; 支持电话簿记录在小内存MCU中的处理; 定长电话簿记录转换,便于数据处理; 完成姓名进行UCS2到Unicode的转换; ************************************************************************************** 文件说明: ------------------------------- 共用头文件 EM78468N.h EM78468N寄存器定义,不同MCU包含不同定义文件 Define.h 用户头文件 ------------------------------- SIM卡头文件 sim_def.h SIM卡协议相关定义 SimMacro.h SIM卡协议相关宏 ------------------------------- 用户代码 SysInit.asm 系统初始化 main.asm 主程序 ------------------------------- SIM卡协议代码 Hardware.asm SIM卡接口底层硬件接口 SIM_UART.asm ISO7816串行接口程序 Transp.asm 数据传输控制代码 ATR.asm 复位应答处理函数 SIM_PTS.asm 智能卡协商模式处理 SelDir.asm 选择电信目录 SelPho.asm 选择电话簿 ReadPho.asm 读取电话簿中的一条记录 WritePho.asm 向电话簿写入一条记录 PIN.asm PIN码校验 -------------------------------- 公共函数库,注意参数传递接口 Common.asm ************************************************************************************** 调用关系: ----------------------------->调用顺序 可能不需要 循环 ----------> <------------------------------------------------------------- SIM卡初始化 选择电信目录 | 校验PIN | 选择电话簿 | 读取或写入电话簿记录 姓名解析 | 关闭SIM卡 应用层 | 上电初始化------------->SIM_INIT----------->SIM_SEL_DIR----------->PIN----------->SIM_SEL_PHO----------->SIM_RAED_PHO/SIM_WRITE_PHO----------->UCS2_TO_UNICODE----------->CLOSESIM | | | | | | | | | | ----------------- | | | | | | | | | | | | | | | 协 | | | SIM_ATR SIM_PTS | | | | | 议 | | | | | | | | | | 层 | | | ------------------------------------------------------------------------------------------ | | | | | | | | | 数据传输控制协议 | | | | | | 物理层 | SIM_INIT_PORT RSTSIM ISO7816串行接口(虚拟) CLOSESIM 说明: 系统上电初始化时调用SIM_INIT_PORT初始化SIM卡接口 然后当要进行SIM卡操作时,调用SIM_INIT进行SIM卡初始化,调用后判断出口GR0是否正常 然后调用SIM_SEL_DIR选择电信目录,要判断返回值,如果正常跳过PIN 如果有PIN而没有锁死就调用PIN校验程序,判断返回值 调用SIM_SEL_DIR选择电信目录,此时会得到记录的信息,如记录长度和记录容量,写入全局变量;调用后判断返回值 调用SIM_RAED_PHO或SIM_WRITE_PHO记录操作程序,每次判断返回值(在此也可判断PIN码去解PIN) 根据需求调用UCS2_TO_UNICODE将姓名转换为标准Unicode码,根据返回值判断是否合法 操作完毕调用CLOSESIM关闭SIM卡 除了返回有PIN码保护外,其他异常均要结束正常操作或重试(注意PIN码校验的重试次数!!) ************************************************************************************** 常量说明 GSM_PHONE_L GSM11.11 规定的电话号码区的长度,2个标示字节+10个号码字节+2个扩展字节;一定不要改动 BAK_PHONE_L 要保存的每条记录的电话号码长度,可自定义,但不能超出GSM_PHONE_L,建议选取12字节,不必保存扩展字节 BAK_NAME_L 每条记录保存的姓名长度,可自定义,建议14~16字节。 BAK_REC_L 每条记录存储长度,即BAK_NAME_L + BAK_PHONE_L BUFF_SIZE 缓冲区大小,大于等于BAK_REC_L,但也要大于选择电话本文件时的取响应数据长度15个字节。 也要大于ATR接收时的缓冲大小,在此用了18字节(丢弃了历史字符)。 推荐28~30字节 原姓名格式 ---------------------------------------------------------------------------------------------------------------------- |<---------------姓名变长0~242字节--------------->|<----2字节号码标识 + 10字节压缩BCD码电话号码 + 2字节扩展字节----->| ---------------------------------------------------------------------------------------------------------------------- | | | | ----------- ------------------------------------------ 调用读写函数,定长变成互转功能内部处理 | | 外部接口只认为读到一个定长数据,写出时也要是一个定长数据 高层的格式 | | ---------------------------------------------------------- |<-- 转换成定长BAK_NAME_L-->|<--电话号码定长BAK_PHONE_-->| 转换为定长,姓名和号码都截取前面部分 ---------------------------------------------------------- | | ----------- 调用UCS2_TO_UNICODE,注意这是单向的,不可逆转回到原始UCS2编码 | | -------------------------------------------------------- |<--------------- 转换成Unicode码---------------------->| -------------------------------------------------------- ;------------------------------------------------------------ 命令返回值定义 NOERR 正常 NOSIM 没有SIM卡 TMOUT 操作超时 PINERR PIN码保护 SIMERR 未知错误 注意以上GR0出口数值 0x80 ~ 0xff 程序内部使用,不要自定义在高128编码 ;------------------------------------------------------------ ************************************************************************************** 变量说明 为了便于局部变量的使用,统一定义了8个虚拟的通用寄存器GR0~GR7,也便于不同指令系统MCU的移植 在EMC单片机中,这8个变量放在未分页的寄存器BANK中; SIM卡协议使用的全局变量尽量使用未分页的寄存器,修改时注意BANK切换 SCON 控制寄存器 sim_rec_l SIM卡电话本一条记录的长度 sim_rec_n SIM卡电话本记录总数 sim_ept1 字符发送间隔时间 sim_ept2 由收到发间隔保护时间 IOBUFF 数据首地址,容量大小定义为上面的BUFF_SIZE, 注意在EMC中末地址最好不要达到每个bank的0x3f,因为内部最后一次循环间址寄存器加一可能会修改寄存器BANK UNIBUFF 姓名转换成Unicode码后存放的缓冲区 **************************************************************************************

近期下载者

相关文件


收藏者