门禁C语言程序_第1页
门禁C语言程序_第2页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include<>#include<>#defineLed_datXBYTE0xcfe8#defineLed_ctlXBYTE0xcfe9#definePortAXBYTE0xcfa0#definePortBXBYTE0xcfa1#definePortCtrXBYTE0xcfa3typedefunsignedcharuchar;bitcard_on;sbitcard_pwr=P1A0;/*IC卡的电源控制*/sbitok=P1A1;/*身份识别标志*/xdataunsignedlongkey_value,id10;xdataucharidadd=10,key_num=

2、0;voidINI8255(uchardat);/*8255的配置程序*/voidICCARDW(ucharadd,uchardat);ucharICCARDR(ucharadd);voidICCARDSTART(void);voidICCARDSTOP(void);voidICCARDWb(uchardat);voidICCARDACK(void);/*函数定义*/voidDisplay_byte(ucharloc,uchardat)uchartable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e

3、,0x79,0x71;loc&=0xf;Led_ctl=loc|0x80;Led_dat=tabledat&0xf;/*显示低4位*/unsignedlongkey(uchartemp)switch(temp)case0xc0:return0;case0xc1:return1;case0xc2:return2;case0xc3:return3;case0xc6:return4;case0xc7:return5;case0xc8:return6;case0xc9:return7;case0xcc:return8;case0xcd:return9;case0xce:return10

4、;case0xcf:return11;case0xd2:return12;case0xd3:return13;case0xd4:return14;case0xd5:return15;default:return16;voiddellay(unsignedintt)for(;t>0;t-);voidcard_insert(void)interrupt0card_on=1;card_pwr=1;voidcard_wr(void)interrupt2chari;staticcharnum=0;unsignedlongdat=0;card_pwr=1;for(i=0;i<3;i+)ICCA

5、RDW(idadd+i,key_value>>(16-i*8);for(i=0;i<3;i+)dat|=(unsignedlong)ICCARDR(idadd+i)<<(16-i*8);if(dat&0xffffff)!=(key_value&0xffffff)for(i=0;i<6;i+)Display_byte(i,15);elseidnum+=dat;if(num>10)num=0;for(i=0;i<6;i+)Display_byte(i,0);card_pwr=0;key_num=0;EX0=1;/*函数名称:voidI

6、NI8255(uchardat)函数说明:对8255进行配置输入参数:配置字节输出参数:无*/voidINI8255(uchardat)PortCtr=dat;/*函数名称:voidICCARDWb(uchardat)函数说明:向IC卡内写入字节数据输入参数:写入的数据输出参数:*/voidICCARDWb(uchardat)uchari,temp;for(i=0;i<8;i+)dellay(10);temp=dat;temp&=0x80;if(temp)PortA=1;elsePortA=0;dellay(10);PortB=1;dellay(10);PortB=0;dat&l

7、t;<=1;dat&=0xff;/*函数名称:voidICCARDW(ucharadd,uchardat)函数说明:向IC卡内指定地址写入指定数据输入参数:欲写入的地址和数据输出参数:无*/voidICCARDW(ucharadd,uchardat)ICCARDSTART();/*ICCARDWb(0xa0);/*ICCARDACK();ICCARDWb(add);/*ICCARDACK();ICCARDWb(dat);/*ICCARDACK();ICCARDSTOP();启动IC卡的操作*/启动IC卡的写操作*/写入地址字节*/写入数据*/*函数名称:ucharICCARDR(

8、ucharadd)函数说明:向从IC卡内指定地址读出数据输入参数:要读的地址输出参数:读出的数据*/ucharICCARDR(ucharadd)uchari,temp,temp1;ICCARDSTART();/*ICCARDWb(0xa0);/*ICCARDACK();ICCARDWb(add);/*ICCARDACK();ICCARDSTART();/*ICCARDWb(0xa1);/*启动IC卡的操作*/启动IC卡的写操作*/写入地址字节*/启动IC卡的操作*/启动IC卡的读操作*/ICCARDACK();配置8255的A口为输入,B口输出*/INI8255(0x99);/*dellay(

9、10);for(i=0;i<8;i+)temp<<=1;PortB=1;dellay(10);temp1=PortA;temp1&=1;if(temp1)temp|=1;PortB=0;dellay(10);ICCARDSTOP();returntemp;/*函数名称:voidICCARDSTART(void)函数说明:启动IC卡的操作输入参数:无输出参数:无*/voidICCARDSTART(void)INI8255(0x89);/*配置8255的A口为输出,B口输出*/PortB=0;/*时钟位变低*/dellay(10);PortA=1;/*数据位变高*/del

10、lay(10);PortB=1;/*时钟位变高*/dellay(10);PortA=0;/*数据位变低*/dellay(10);PortB=0;/*时钟位变低*/*函数名称:voidICCARDSTOP(void)函数说明:结束对IC卡的操作输入参数:无/*函数名称函数说明输入参数输出参数输出参数:无*/voidICCARDSTOP(void)INI8255(0x89);/*配置8255的A口为输出,B口输出*/dellay(10);PortA=0;/*数据位变低*/PortB=1;/*时钟位变高*/dellay(10);PortA=1;dellay(10);/*数据位变高*/voidICCA

11、RDACK(void)监测字节操作是否结束无无*/voidICCARDACK(void)uchartemp;INI8255(0x99);/*PortB=1;/*dellay(10);temp=PortA;temp&=1;while(temp)temp=PortA;temp&=1;PortB=0;/*INI8255(0x89);/*dellay(10);配置8255的A口为输入,B时钟位变高*/数据位变低*/配置8255的A口为输出,B口输出口输出*/*/*主函数*voidmain()unsignedchari,temp;unsignedlongtmp;Led_ctl=0xd1;

12、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;i<3;i+)temp=ICCARDR(idadd+i);tmp|=(unsignedlong)temp<<(16-i*8);Display_byte(2*i,(temp&0xf0)>>4);Display_byte(2*i+1,temp&0xf);card_on=0;card_pwr=0;for(i=0;i<10;i+)if(tmp=idi)ok=0;dellay(30000);ok=1;tmp=0;break;if(Led_ctl&0xf)>0)EX0=0;Led_ctl=0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论