📄 gm8166rd.lst
字号:
C51 COMPILER V8.05a GM8166RD 09/21/2007 13:45:31 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE GM8166RD
OBJECT MODULE PLACED IN GM8166RD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE GM8166RD.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define ulong unsigned long
5 sbit Dir = P2^0; //*SP/Mux*/
6 sbit M0 = P3^4; //*M0*/
7 sbit M1 = P3^5; //*M1*/
8 sbit IOEN = P1^7; //*OC/EN*/
9 sbit SData = P3^6; //*SData */
10 sbit SClk = P3^7; //*SClk*/
11
12 ulong SwapHigh6Bit(ulong RecData) //交换高六位
13 {
14 1 uchar BitCnt; //交换移位位数
15 1 ulong OneH6Bit; //高六位中的一位
16 1 ulong H6Bit=0;
17 1
18 1 for(BitCnt=0;BitCnt<6;BitCnt++)
19 1 {
20 2 H6Bit<<=1;
21 2 OneH6Bit=(RecData<<(5-BitCnt))&0x80000000;
22 2 if(0x80000000==OneH6Bit)
23 2 {
24 3 H6Bit+=1;
25 3 }
26 2 }
27 1
28 1 H6Bit<<=26;
29 1 RecData=H6Bit|(RecData&0x03ffffff);
30 1 return(RecData);
31 1 }
32
33 ulong GM8166Read() //从GM8166读取32位数据
34 {
35 1 uchar BitCnt; //移入位数
36 1 ulong RecData = 0x00000000; //接收数据,对应开关状态:最高位:开关1
37 1
38 1
39 1 IOEN = 0; //并行输入允许
40 1 SClk = 0;
41 1 SClk = 1; //并行口数据置入寄存器
42 1 IOEN = 1; //并行输入禁止
43 1
44 1 if(SData == 1)
45 1 {
46 2 RecData++;
47 2 }
48 1 RecData <<= 1;
49 1
50 1 for(BitCnt=0;BitCnt<31;BitCnt++)
51 1 {
52 2 SClk = 0;
53 2 SClk = 1;
54 2 if(SData == 1)
55 2 {
C51 COMPILER V8.05a GM8166RD 09/21/2007 13:45:31 PAGE 2
56 3 RecData++;
57 3 }
58 2
59 2 if(BitCnt<30)
60 2 {
61 3 RecData <<= 1;
62 3 }
63 2 }
64 1
65 1 RecData=SwapHigh6Bit(RecData);
66 1
67 1 return(RecData);
68 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 259 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
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 + -