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

下载本文档

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

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论