




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include #include #defineLed_datXBYTE0xcfe8#defineLed_ctlXBYTE0xcfe9#definePortAXBYTE0xcfa0#definePortBXBYTE0xcfa1#definePortCtrXBYTE0xcfa3typedef unsigned char uchar;bit card_on;sbit card_pwr = P10; /*IC卡的电源控制*/sbit ok = P11; /*身份识别标志*/xdata unsigned long key_value,id10;xdata uchar idadd = 10,key_n
2、um = 0;void INI8255(uchar dat); /*8255的配置程序*/void ICCARDW(uchar add,uchar dat); uchar ICCARDR(uchar add);void ICCARDSTART(void);void ICCARDSTOP(void);void ICCARDWb(uchar dat);void ICCARDACK(void);/*-* 函数定义 */void Display_byte(uchar loc,uchar dat) uchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0
3、x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; loc &=0xf; Led_ctl = loc|0x80; Led_dat = tabledat&0xf; /*显示低4位*/ unsigned long key(uchar temp) switch (temp) case 0xc0: return 0; case 0xc1: return 1; case 0xc2: return 2; case 0xc3: return 3; case 0xc6: return 4; case 0xc7: return 5; case 0xc8: return 6; case
4、 0xc9: return 7; case 0xcc: return 8; case 0xcd: return 9; case 0xce: return 10; case 0xcf: return 11; case 0xd2: return 12; case 0xd3: return 13; case 0xd4: return 14; case 0xd5: return 15; default: return 16; void dellay(unsigned int t) for(;t0;t-); void card_insert(void) interrupt 0 card_on = 1;
5、card_pwr = 1; void card_wr(void) interrupt 2 char i; static char num = 0; unsigned long dat = 0; card_pwr = 1; for(i=0;i(16-i*8); for(i=0;i3;i+)dat |= (unsigned long)ICCARDR(idadd+i)(16-i*8); if(dat&0xffffff)!= (key_value&0xffffff) for(i=0;i10) num = 0; for(i=0;i6;i+) Display_byte(i,0); card_pwr = 0
6、; key_num = 0; EX0 = 1; /*- 函数名称 : void INI8255(uchar dat) 函数说明 : 对8255进行配置 输入参数 : 配置字节 输出参数 : 无-*/void INI8255(uchar dat) PortCtr = dat; /*- 函数名称 : void ICCARDWb(uchar dat) 函数说明 : 向IC卡内写入字节数据 输入参数 : 写入的数据 输出参数 : -*/void ICCARDWb(uchar dat) uchar i,temp; for(i=0;i8;i+) dellay(10); temp = dat; temp &
7、=0x80; if(temp) PortA = 1; else PortA = 0; dellay(10); PortB = 1; dellay(10); PortB = 0; dat=1; dat &=0xff; /*- 函数名称 : void ICCARDW(uchar add,uchar dat) 函数说明 : 向IC卡内指定地址写入指定数据 输入参数 : 欲写入的地址和数据 输出参数 : 无-*/void ICCARDW(uchar add,uchar dat) ICCARDSTART(); /*启动IC卡的操作*/ ICCARDWb(0xa0); /*启动IC卡的写操作*/ ICCA
8、RDACK(); ICCARDWb(add); /*写入地址字节*/ ICCARDACK(); ICCARDWb(dat); /*写入数据*/ ICCARDACK(); ICCARDSTOP(); /*- 函数名称 : uchar ICCARDR(uchar add) 函数说明 : 向从IC卡内指定地址读出数据 输入参数 : 要读的地址 输出参数 : 读出的数据 -*/uchar ICCARDR(uchar add) uchar i,temp,temp1; ICCARDSTART(); /*启动IC卡的操作*/ ICCARDWb(0xa0); /*启动IC卡的写操作*/ ICCARDACK()
9、; ICCARDWb(add); /*写入地址字节*/ ICCARDACK(); ICCARDSTART(); /*启动IC卡的操作*/ ICCARDWb(0xa1); /*启动IC卡的读操作 */ ICCARDACK(); INI8255(0x99); /*配置8255的A口为输入,B口输出*/ dellay(10); for(i=0;i8;i+) temp=1; PortB = 1; dellay(10); temp1 = PortA ; temp1 &=1; if(temp1) temp |= 1; PortB = 0; dellay(10); ICCARDSTOP(); return
10、temp; /*- 函数名称 : void ICCARDSTART(void) 函数说明 : 启动IC卡的操作 输入参数 : 无 输出参数 : 无-*/void ICCARDSTART(void) INI8255(0x89); /*配置8255的A口为输出,B口输出*/ PortB = 0; /*时钟位变低*/ dellay(10); PortA = 1; /*数据位变高*/ dellay(10); PortB = 1; /*时钟位变高*/ dellay(10); PortA = 0; /*数据位变低*/ dellay(10); PortB = 0; /*时钟位变低*/ /*- 函数名称 :
11、void ICCARDSTOP(void) 函数说明 : 结束对IC卡的操作 输入参数 : 无 输出参数 : 无-*/void ICCARDSTOP(void) INI8255(0x89); /*配置8255的A口为输出,B口输出*/ dellay(10); PortA = 0; /*数据位变低*/ PortB = 1; /*时钟位变高*/ dellay(10); PortA = 1; /*数据位变高*/ dellay(10); /*- 函数名称 : void ICCARDACK(void) 函数说明 : 监测字节操作是否结束 输入参数 : 无 输出参数 : 无-*/void ICCARDAC
12、K(void) uchar temp; INI8255(0x99); /*配置8255的A口为输入,B口输出*/ PortB = 1; /*时钟位变高*/ dellay(10); temp = PortA; temp &=1; while(temp) temp = PortA; temp &=1; PortB = 0; /*数据位变低*/ INI8255(0x89); /*配置8255的A口为输出,B口输出 */ dellay(10); /* 主函数 */void main() unsigned char i,temp; unsigned long tmp; Led_ctl = 0xd1; while(Led_ctl&0x80)=0x80); Led_ctl = 0x31; IE = 0x85;/*允许外部中断0中断*/ IT0 = 1;/*外部中断0为边沿触发*/ IT1 = 1;/*外部中断1为边沿触发*/ card_on = 0; card_pwr = 0; key_num = 0; while(1) if(card_on) ok = 1; tmp = 0; for(i=0;i3;i+) temp = ICCARDR(idadd+i); tmp |= (unsigned long)temp4); Display_byte(2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024语文《爷爷和小树》教学设计
- 2025年齐齐哈尔如何考货运从业资格证
- 2025年济宁货运资格证考试有哪些项目
- 2025年合作从业资格证应用能力考些啥
- 心理健康《正确认识自己》教学设计
- 《城市轨道交通票务工作》课件-项目一 认知票务管理体系 票务报表的填写
- 大学生问卷调查报告范文
- 阳江职业技术学院《公共健康与预防医学》2023-2024学年第一学期期末试卷
- 《兵工企业常用焊接方法与设备使》课件-电阻焊电源、电极、分类及应用点焊
- 2025年电动汽车维修技师职业考试试题及答案
- 士兵军考模拟卷(化学)
- 大学军事理论课教程第三章军事思想第三节中国古代军事思想
- 小升初成语运用题有答案
- 王贵启-玉米田杂草发生发展及除草剂优解-合肥0728
- 电信全综合业务支撑维护工作经验交流材料
- 除尘系统和相关安全设施设备运行、维护及检修、维修管理制度
- 食品营养学(暨南大学)智慧树知到答案章节测试2023年
- 医院18项核心制度(2023年)
- 2023年广东省初中生物地理学业考试真题集合试卷及答案高清版
- 情绪管理课:认识情绪-心理健康教育课件
- GB/T 21459.3-2008真菌农药可湿性粉剂产品标准编写规范
评论
0/150
提交评论