📄 button.lst
字号:
C51 COMPILER V7.10 BUTTON 11/02/2009 22:38:11 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE BUTTON
OBJECT MODULE PLACED IN button.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE button.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 标题: 学习板的按钮输入 控制对应的继电器输出 *
3 * *
4 * 连接方法:用8PIN排线将JP5与JP6连接 和 JP11(P2)与JP1(LED灯)连接 *
5 *
6 * 1. 通过本例程了解74HC165(并入串出) 的基本原理和使用 *
7 * 2.了解掌握SPI总线接口的工作原理及一般编程方法。 *
8 * 3. 懂的74HC165在C语言中是如何操作 * *
9 * * *
10 ********************************************************************************/
11 #include <reg52.H>
12 #include <intrins.h>
13
14 #define NOP() _nop_() /* 定义空指令 */
15 #define _Nop() _nop_() /*定义空指令*/
16
17
18 sbit CLK = P3^6;
19 sbit IN_PL = P1^6; //74HC165 shift load 把数据加载到锁存器中
20 sbit IN_Dat = P1^7; //74HC165 output 数据通过P3.5脚移进单片机内处理
21 sbit RELAY = P1^4;
22 sbit BEEP = P1^5;
23
24
25 unsigned long ReHC74165(void); //函数声名
26 unsigned char bdata Key;
27 unsigned int Output;
28 sbit K0=Key^0;
29 sbit K1=Key^1;
30 sbit K2=Key^2;
31 sbit K3=Key^3;
32 sbit K4=Key^4;
33 sbit K5=Key^5;
34 sbit K6=Key^6;
35 sbit K7=Key^7;
36
37 bit K0J,K1J,K2J,K3J; //位定义
38
39 bit M0,M1,M2,M3; //位定义
40
41 main()
42 {
43 1 //M0=M1=M2=M3=0;
44 1 while(1)
45 1 {
46 2 unsigned long Input=ReHC74165();
47 2 Key=Input&0xff;
48 2
49 2 //实现脉冲输入
50 2 if(K0&K0J)M0=~M0;
51 2 K0J=~K0;
52 2 if(K1&K1J)M1=~M1;
53 2 K1J=~K1;
54 2 if(K2&K2J)M2=~M2;
55 2 K2J=~K2;
C51 COMPILER V7.10 BUTTON 11/02/2009 22:38:11 PAGE 2
56 2 if(K3&K3J)M3=~M3;
57 2 K3J=~K3;
58 2
59 2 RELAY = 1;
60 2 BEEP = 1;
61 2
62 2 if(M0) RELAY = 0;
63 2 if(M1) BEEP = 0;
64 2
65 2 P2 = K0;
66 2
67 2 }
68 1
69 1 }
70
71
72
73 /*************************此部分为74HC165的驱动程序使用SPI总线连接*************************************/
74
75
76 /*********************************************************************************************************
77 ** 函数名称: 74HC165
78 ** 功能描述:
79 ** 管脚描述:请参考相关的芯片资料(学习光盘中以配)
80 *********************************************************************************************************/
81 unsigned long ReHC74165(void)
82 {
83 1 unsigned char i;
84 1 unsigned long indata;
85 1
86 1 IN_PL=0;
87 1 NOP();
88 1 IN_PL=1;
89 1 NOP();
90 1
91 1 indata=0;
92 1 for(i=0; i<8; i++)
93 1 {
94 2 indata=indata<<1;
95 2 if(IN_Dat==1)indata=indata+1;
96 2 CLK=1;
97 2 NOP();
98 2 CLK=0;
99 2 }
100 1
101 1 return(~indata);
102 1
103 1 }
104
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 137 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 4
IDATA SIZE = ---- ----
BIT SIZE = 8 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -