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

下载本文档

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

文档简介

1、#includeinclude#defineLed_datXBYTE0xcfe8#defineLed_ctlXBYTE0xcfe9#definePortAXBYTEtOxcfaO#definePortBXBYTEtOxcfal#definePortCtrXBYTE0xcfa3typedefunsigned char uchar;bit card_on;sbit card_pwr = PI O; /*IC 卡的电源控制*/ sbit ok二Pll;/*身份识别标志*/xdata unsigned long key_value, id10;xdata uchar idadd = 10, key_n

2、um = 0;void INI8255(uchar dat);void ICCARDW(uchar add, uchar dat); uchar ICCARDR(uchar add);void ICCARDSTART(void);void ICCARDSTOP(void);void ICCARDR (uchar dat);void ICCARDACK(void);/*8255的配置程序柠*函数泄义*void Display_byte(uchar loc,uchar dat)uchartable = 0x3ft 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,

3、0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;loc &二Oxf;Led_ctl = loc 0x80;Led_dat = table dat&Oxf ;/*显示低 4 位*/unsigned long key(uchar temp)switch (temp)case OxcO:return 0;case Oxcl:return 1;case 0xc2: return 2;case 0xc3: return 3;case 0xc6: return 4;case 0xc7: return 5;case 0xc8: return 6;case 0xc

4、9: return 7;case Oxcc: return 8;case Oxcd: return 9;case Oxce: return 10;case Oxcf: return 11;case 0xd2: return 12;case 0xd3: return 13;case Oxd4: 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;card_puT = 1;void

5、 car(void) interrupt 2char i;static char num = 0;unsigned long dat = 0;card_puT = 1;for(i=0;i3;i+)ICCRDW(idadd+i, key_value (16-i*8);for(i=0;i3;i+)dat = (unsigned long) ICGRDR(idadd+i)(16-i*8);if (dat&Oxffffff)!= (key_value&Oxffffff)for(i=0;i10) num = 0;for(i=0;i6;i+)Display_byte(i, 0);card_puT = 0;

6、key_num = 0;EXO = 1;W MM OHM函数名称:void INI8255(uchar dat)函数说明:对8255进行配置输入参数:配置字节输出参数:无MM OHM*MHOwMMV fllBV void INI8255(uchar dat)PortCtr = dat;函数名称:void ICCARDWb (uchar dat)函数说明:向IC卡内写入字节数据输入参数:写入的数据输出参数:*/ void ICCARDWb(uchar dat)uchar i, temp;for(i=0;i / SHM MBMflHM *MHO MMBflBMBflHMW* Wuchar ICCA

7、RDR (uchar add)uchar i, temp, tempi;ICCARDSTARTO ;/*启动 IC 卡的操作*/ICCARDWb(OxaO); /*启动IC卡的写操作*/ ICCARDACKO ;ICCARDWb (add);/*写入地址字节*/ICCARDACKO ;ICCARDSTARTO ;/*启动 IC 卡的操作*/ICCARDWb(Oxal); /*启动IC卡的读操作*/ ICCARDACKO ;INI8255(0x99);/*配置 8255 的 A 口为输入,B 口输出*/dellay(10);for(i=0;i8;i+)temp=l;PortB 二 1;della

8、y (10);tempi = PortA ;tempi &=1;if(tempi) temp 二 1;PortB = 0;dellay (10);ICCARDSTOPO;return temp;函数名称:void ICCARDSTART(void)函数说明:启动IC卡的操作输入参数:无输出参数:无心/ MMMHOWMMV fllBVvoid ICCARDSTART(void)INI8255(0x89);/*配置 8255 的 A 口为输出,B 口输出*/PortB = 0;/*时钟位变低*/dellay(10);PortA = 1;/*数据位变高*/dellay(10);PortB二1;/*时

9、钟位变高*/dellay(10);PortA二0;/*数据位变低*/dellay(10);PortB = 0;/*时钟位变低*/函数名称: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)函数说明:监测字节操作

10、是否结束输入参数:无输出参数:无Wvoid ICCARDACK(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 mainOunsigned char i, temp;unsigned long tmp;Le

11、d_ctl = Oxdl;while(Led_ctl&0x80)=0x80);Led_ctl = 0x31;IE = 0x85;/*允许外部中断0中断*/ITO = 1;/*外部中断0为边沿触发*/IT1二1;/*外部中断1为边沿触发*/card_on = 0;card_pwr = 0;key_num = 0;while(l)if(card_on)ok = 1;tmp = 0;for(i=0;i3;i+)temp 二 ICCARDR(idadd+i);tmp = (unsigned long) temp (16-i*8);Display_byte(2*i, (temp&OxfO)4);Display_byte(2*i+l, temp&0xf);card_on = 0; card_pwr = 0;for(i=0;i0)EXO = 0;Led_ctl = 0x40;temp

温馨提示

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

最新文档

评论

0/150

提交评论