版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年家务助理临时派遣合同
- 2024年定制化全年铲车租赁服务合同
- 2024年国际跨境电商物流服务协议
- 2024年国际旅游岛开发与经营权转让合同
- 2024年保险合同保险责任及除外条款
- 2024-2025学年新教材高中生物第2章基因和染色体的关系第1节第2课时受精作用练习含解析新人教版必修第二册
- 湖南省衡阳市衡阳县2025届高三一模 数学试题含答案
- 2024年城市规划与建筑设计合同
- 2024年城市光纤宽带网络建设合同
- 网络平台技术服务协议
- 内蒙古呼和浩特市回民区2023-2024学年九年级上学期期中考试历史试题(含答案)
- 校园文化知识讲座
- 开展法律宣传知识讲座
- 连锁经营与管理职业生涯规划书
- 傅青主女科之带下病
- 2024年八年级语文上册期末专项复习:病句的辨识与修改
- 法院服务外包电子卷宗随案生成扫描服务方案
- 慢性肾脏病5期
- 浙教版劳动二年级上册全册教案
- 铁血将军、建军元勋-叶挺 (1)讲解
- 智能控制导论 第4版 课件全套 蔡自兴 第1-12章 概论、递阶控制-人工智能的发展简史与展望
评论
0/150
提交评论