SLE4442卡_IC的51单片机驱动程序.pdfVIP

  • 3
  • 0
  • 约4.43千字
  • 约 15页
  • 2021-11-12 发布于上海
  • 举报
SLE4442卡_IC 的 51 单片机驱动程序 整理了最初的实验草稿版,将端口宏定义,函数声 明以及常用的函数声明建立头文件,感觉清楚多了,在 不断地修改中凝练,在不停的实践中提高,满眼的思绪, 在小小的 Readme中划过一笔 ~~~~~~~~ char data_RST[4], ErrorCount[4]; void IC_RST(void) { uchar value,i,count; DATA_IN; //IC 输入 RST_LOW; // 复位时序 CLK_LOW; DATA_HIGH; DelayUs(5); RST_HIGH; DelayUs(5); CLK_HIGH; DelayUs(5); CLK_LOW; DelayUs(5); RST_LOW; DelayUs(2); for(i=0;i;; 1; DelayUs(2); CLK_LOW; DelayUs(2); CLK_HIGH; DelayUs(2); if(RD5 == 1) { value |= 0x80; // 判断 IO 脚是否为 1,是则位置 1 } else { value = 0x7f; // 否则位置 0 } DelayUs(2); } data_RST[i] = value; DelayUs(2); } DelayUs(2); CLK_LOW; DelayUs(2); DATA_HIGH; } void IC_Init(void) // 初始化 { TRISD1 = 0; RD1 = 0; // 上电 TRISD4 = 0; // 时钟输出 TRISD3 = 0; //RST 输出 DelayMs(5); // 上电的必要延时,否则程序出错 } void Start(void) { DATA_OUT; // 开始时序 CLK_LOW; DATA_HIGH; DelayUs(2); CLK_HIGH; DelayUs(2); DATA_LOW; DelayUs(2); CLK_LOW; } void Stop(void) // 结束时序 { DATA_OUT; CLK_LOW; NOP(); NOP(); DATA_LOW; DelayUs(2); CLK_HIGH; DelayUs(2); DATA_HIGH; DelayUs(2); } uchar Byte_Read(void) // 读字节 { uchar count; uchar value; DATA_IN; DelayUs(2); value = 0xff; for(count=0;count;; 1; // 循环右移,从最低位开始读 DelayUs(2); CLK_LOW; DelayUs(2); CLK_HIGH; DelayUs(2); if(RD5 == 1) { value |= 0x80;// 判断 IO 脚是否为 1 } else { value = 0x7f; } DelayUs(2); } return (value); } void Byte_WRT(uchar Xdata) // 写字节 { uchar count; DATA_OUT; DelayUs(2); for(count=8;count!=0;count--) { CLK_LOW; DelayUs(2); if((Xdata)0x01) { DATA_HIGH; } else { DATA_LOW; } DelayUs(2); CLK_HIGH; DelayUs(2); Xdata = Xdata ;;

文档评论(0)

1亿VIP精品文档

相关文档