📄 ch452_4w_drive.lst
字号:
C51 COMPILER V7.06 CH452_4W_DRIVE 01/17/2009 08:43:37 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CH452_4W_DRIVE
OBJECT MODULE PLACED IN CH452_4W_DRIVE.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CH452_4W_DRIVE.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "CH452_PIN_DEFINE.H" // 修改该文件以适应硬件环境/单片机型号等
2 #include "CH452_COM_DEFIND.H" // CH452常量定义
3
4 //延时函数
5 void Delay(int Times)
6 {
7 1 int i=0;
8 1 while(i<Times){i++;}
9 1 }
10 //输出操作命令子程序
11 //定义一无符号整型变量存储12字节的命令字。
12 void CH452_Write(unsigned short cmd)
13 {
14 1 unsigned char i;
15 1 DISABLE_KEY_INTERRUPT; //禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输
16 1 CH452_LOAD_CLR; //命令开始,LOAD=0
17 1 CH452_LOAD_D_OUT; // 设置LOAD为输出方向
18 1 CH452_DOUT_D_IN; // 设置DOUT为输入方向
19 1 CH452_DIN_D_OUT; // 设置DIN为输出方向
20 1 CH452_DCLK_D_OUT; // 设置DCLK为输出方向
21 1 /**************************************写命令字*********************************/
22 1 for(i=0;i!=12;i++) //送入12位数据,低位在前
23 1 {
24 2 if (cmd&1) {CH452_DIN_SET;} //输出1
25 2 else {CH452_DIN_CLR;} // 输出0
26 2 // CH452_DIN=cmd&1;
27 2 CH452_DCLK_CLR;
28 2 cmd>>=1;
29 2 CH452_DCLK_SET; //上升沿有效
30 2 }
31 1 CH452_LOAD_SET; //加载数据,LOAD上升沿
32 1 Delay(20); //延时保持
33 1 /*
34 1 DELAY_1US; //命令数据加载周期不小于6US,CH451不需要该周期
35 1 DELAY_1US;
36 1 DELAY_1US;
37 1 DELAY_1US;
38 1 DELAY_1US;
39 1 DELAY_1US;
40 1 */
41 1 ENABLE_KEY_INTERRUPT;
42 1 /******************************END*************************************************/
43 1 }
44
45 //*************************************************
46 //输入按键代码子程序,从CH452读取
47 unsigned char CH452_Read( void )
48 {
49 1 unsigned char i;
50 1 unsigned char cmd,keycode; //定义命令字,和数据存储器
51 1 DISABLE_KEY_INTERRUPT; //禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输
52 1 /**************************************发送读按键的命令字*************************************************
-*****/
53 1 cmd=0x07; //读按键的命令字
54 1 CH452_LOAD_CLR;
C51 COMPILER V7.06 CH452_4W_DRIVE 01/17/2009 08:43:37 PAGE 2
55 1 for(i=0;i!=4;i++) // 只需要发出高4位,多发也可以,但应该确保最后留下的4位是该命令码
56 1 {
57 2 if (cmd&1) {CH452_DIN_SET;}
58 2 else {CH452_DIN_CLR;} // 输出位数据
59 2 // CH452_DIN=cmd&1; //送入最低位
60 2 CH452_DCLK_CLR;
61 2 cmd>>=1; //往右移一位
62 2 CH452_DCLK_SET; //产生时钟上升沿锁通知CH451输入位数据
63 2 }
64 1 CH452_LOAD_SET; //产生加载上升沿通知CH451处理命令数据
65 1 /*********************************读取按键代码***********************************************/
66 1 keycode=0; //清除keycode
67 1 for(i=0;i!=7;i++)
68 1 {
69 2 keycode<<=1; //数据移入keycode,高位在前,低位在后
70 2 if (CH452_DOUT) keycode++; //从高到低读入451的数据
71 2 // keycode|=CH452_DOUT;
72 2 CH452_DCLK_CLR; //产生时钟下升沿通知CH451输出下一位
73 2 CH452_DCLK_SET;
74 2 }
75 1 CLEAR_KEY_INTER_FLAG; //清中断标志
76 1 ENABLE_KEY_INTERRUPT;
77 1 return(keycode); //反回键值
78 1 /********************************END********************************************************/
79 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 114 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -