lchjczwlchjczw.blog.chinaunix.net
lchjczw
全部博文(1008)
sysfs(0)
procfs(6)
Java(0)
Linux C(1)
C++(0)
C语言(0)
wifi驱动开发(0)
视频驱动开发(0)
音频驱动开发(2)
网络设备驱动开发(1)
驱动调试(0)
驱动基础(4)
sd卡驱动开发(1)
总线驱动(9)
flash驱动开发(0)
USB驱动开发(1)
2012年(1008)
Lanny_li
zsy77
cynthia
Bsolar
浪花小雨
fengchar
yxl15098
wangfeng
CHLRX
728196
Katherin
分类:
2012-08-01 11:31:01
原文地址:74HC165读按键 作者:luozhiyong131
#include <reg52.H> #include <intrins.h> #define NOP() _nop_() #define _Nop() _nop_() sbit CLK = P3^6;sbit IN_PL = P1^6; //74HC165 shift load 把数据加载到锁存器中sbit IN_Dat = P1^7; //74HC165 output 数据通过P3.5脚移进单片机内处理sbit RELAY = P1^4;sbit BEEP = P1^5; unsigned long ReHC74165(void); //函数声名 unsigned char bdata Key; unsigned int Output;sbit K0=Key^0;sbit K1=Key^1;sbit K2=Key^2;sbit K3=Key^3;sbit K4=Key^4;sbit K5=Key^5;sbit K6=Key^6;sbit K7=Key^7;bit K0J,K1J,K2J,K3J; //位定义bit M0,M1,M2,M3; //位定义 main() { //M0=M1=M2=M3=0; while(1) { unsigned long Input=ReHC74165(); Key=Input&0xff; //实现脉冲输入 if(K0&K0J)M0=~M0; K0J=~K0; if(K1&K1J)M1=~M1; K1J=~K1; if(K2&K2J)M2=~M2; K2J=~K2; if(K3&K3J)M3=~M3; K3J=~K3; RELAY = 1; BEEP = 1; if(M0) RELAY = 0; if(M1) BEEP = 0; P2 = K0; } } unsigned long ReHC74165(void){ unsigned char i; unsigned long indata; IN_PL=0; NOP(); IN_PL=1; NOP(); indata=0; for(i=0; i<8; i++) { indata=indata<<1; if(IN_Dat==1)indata=indata+1; CLK=1; NOP(); CLK=0; } return(~indata); }
上一篇:时钟
下一篇:C51 音乐 (八月桂花)
登录 注册