📄 fun.lst
字号:
C51 COMPILER V7.50 FUN 05/27/2007 09:10:54 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE FUN
OBJECT MODULE PLACED IN fun.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE fun.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 标题: student2000单片机开发系统演示程序 *
3 * 文件: fun.C *
4 * 日期: 2007-5-4 *
5 * 版本: 1.0 *
6
7 ********************************************************************************
8 * 描述: *
9 * 大部分通用函数集合 *
10 * RS232,RS485,延时函数,协议框架演示等 */
11 #include <reg52.h>
12 #include <intrins.h>
13 #include <string.h>
14 #include <absacc.h>
15 #include <stdio.h>
16 #include "sybxt1.h"
17 xdata unsigned char ucRxBuf[RXBUFSIZE];
18 xdata unsigned char ucRxBuf1[RXBUFSIZE];
19 xdata sprotocol spro;
20 sbit P3_6= P3^6;
21 sbit P3_7= P3^7;
22 //rs485的方向控制端;
23 sbit SRSEL=P1^7;
24 unsigned int uiOffset=0;
25 unsigned int uiRxCount=0;
26 uchar i;
27 sbit adclk = P1^1; // 输入输出时钟I/O CLK
28 sbit addata = P1^0; // 数据输出DATA OUT
29 sbit adcs = P1^5; // 片选信号
30 sbit SPI_CLK=P1^1;
31 sbit SPI_DATA=P1^0;
32 sbit CS_DA= P1^4;
33
34 void ComInit(void) /*串行口初始化*/
35 {
36 1 SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
37 1 TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
38 1 PCON |= 0x00; //SMOD=0;
39 1 TH1 = 0xFd; //Baud:4800 fosc=11.0592MHz
40 1 TL1 = 0xFd; //Baud:4800 fosc=11.0592MHz
41 1
42 1 IE |= 0x90; //Enable Serial Interrupt
43 1 TR1 = 1; // timer 1 run
44 1 }
45 /*********************************
46 串口 0 中断函数
47 *********************************/
48 void serial_0(void) interrupt 4
49 {
50 1
51 1 unsigned char a;
52 1 if(RI)
53 1 {
54 2 a=SBUF;
55 2 ucRxBuf[uiRxCount]=a;
C51 COMPILER V7.50 FUN 05/27/2007 09:10:54 PAGE 2
56 2 RI=0;
57 2 //send_byte(ucRxBuf[uiRxCount]);
58 2 uiRxCount++;
59 2 uiRxCount%=RXBUFSIZE;
60 2 uccmd=a;
61 2
62 2 }
63 1
64 1 }
65
66
67
68 send_byte(unsigned char ucI)
69 {
70 1 SBUF=ucI;
71 1 do{}while(TI==0);
72 1 TI=0;
73 1 }
74 send_bytes_len(unsigned char *ucI,uchar len)
75 {
76 1 uchar i;
77 1 for(i=0;i<len;i++)
78 1 {
79 2 SBUF=ucI[i];
80 2 do{}while(TI==0);
81 2 TI=0;
82 2 }
83 1 }
84 send_bytes(unsigned char *ucI)
85 {
86 1 for(i=0;i<strlen(ucI);i++)
87 1 {
88 2 SBUF=ucI[i];
89 2 do{}while(TI==0);
90 2 TI=0;
91 2 }
92 1 }
93 send_bytes1_485(unsigned char *ucI,uchar len)
94 {
95 1 SRSEL=1;
96 1 for(i=0;i<10;i++)
97 1 _nop_();
98 1 for(i=0;i<len;i++)
99 1 {
100 2 SBUF=ucI[i];
101 2 do{}while(TI==0);
102 2 TI=0;
103 2 }
104 1 SRSEL=0;
105 1 for(i=0;i<10;i++)
106 1 _nop_();
107 1 }
108 void DisplayKeyToHex_RS485()
109 {
110 1 int i;
111 1 while(uiOffset!=uiRxCount)
112 1 {
113 2 memset(str,0,20);
114 2 i=0;
115 2 i =sprintf(str, "Key=[%c][%2bd]",ucRxBuf[uiOffset],ucRxBuf[uiOffset]);
116 2 i+=sprintf(str+i,"[%2bx]",ucRxBuf[uiOffset]&0x0ff);
117 2 send_bytes1_485(str,i);
C51 COMPILER V7.50 FUN 05/27/2007 09:10:54 PAGE 3
118 2 //send_bytes1_485(&ucRxBuf[uiOffset],1);
119 2 uiOffset++;
120 2 uiOffset%=RXBUFSIZE;
121 2 }
122 1 }
123
124 void delay200ms(uchar icount)
125 {
126 1 unsigned char i,j,k;
127 1 while(icount--)
128 1 {
129 2 for(i=5;i>0;i--)
130 2 for(j=132;j>0;j--)
131 2 for(k=150;k>0;k--);
132 2 }
133 1 }
134 void delay1ms(void)
135 {
136 1 unsigned char i,j;
137 1 for(i=5;i>0;i--)
138 1 for(j=132;j>0;j--)
139 1 ;//for(k=1;k>0;k--);
140 1 }
141 uchar get549data(void)
142 {
143 1 uchar i,sample_data;
144 1 adclk=0;
145 1 adcs=0;
146 1 _nop_();
147 1 _nop_();
148 1 if(addata==1)
149 1 {
150 2 sample_data=1;
151 2 }
152 1 else
153 1 {
154 2 sample_data=0;
155 2 }
156 1 for(i=0;i<7;i++)
157 1 {
158 2 sample_data=(sample_data<<1);
159 2 adclk=1;
160 2 _nop_();
161 2 _nop_();
162 2 adclk=0;
163 2 if(addata==1)
164 2 {
165 3 sample_data=(sample_data|0x01);
166 3 }
167 2 }
168 1 adclk=1;
169 1 _nop_();
170 1 _nop_();
171 1 adclk=0;
172 1 _nop_();
173 1 _nop_();
174 1 adclk=1;
175 1 adcs=1;
176 1 return sample_data;
177 1 }
178
179 void da5615(uint da)
C51 COMPILER V7.50 FUN 05/27/2007 09:10:54 PAGE 4
180 {
181 1 uchar i;
182 1 da<<=6;
183 1 CS_DA=0;
184 1 SPI_CLK=0;
185 1 for (i=0;i<12;i++)
186 1 {
187 2 SPI_DATA=(bit)(da&0x8000);
188 2 SPI_CLK=1;
189 2 da<<=1;
190 2 SPI_CLK=0;
191 2 }
192 1 CS_DA=1;
193 1 SPI_CLK=0;
194 1 for (i=0;i<12;i++);
195 1 }
196
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 570 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = 105 ----
PDATA SIZE = ---- ----
DATA SIZE = 5 11
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 + -