📄 comm.lst
字号:
C51 COMPILER V7.50 COMM 11/17/2005 00:01:59 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE COMM
OBJECT MODULE PLACED IN Comm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Comm.c COMPACT BROWSE DEBUG OBJECTEXTEND
line level source
1 //*************************************************************************
2 //#include <REG51.H>
3 #include "comm.h"
4 //#include <Reg1210.H>
5 #include "MSC1210.H"
6
7 #define XTAL 6000000 // 18432000 XTAL frequency
8
9 // defines for UART BAUDRATE
10 #define BAUDRATE 4800 // 19200bps communication baudrate
11 #define T2RELOAD (65536-(XTAL/32/BAUDRATE))
12
13 // defines for A/D Converter setup
14 #define A_CLK ((XTAL/1000000)-1) // about 1MHz Analog Clock
15 #define ANA_CLK (XTAL/(A_CLK+1)) // precise Analog Clock
16 #define DECIMATION (ANA_CLK/64/10) // 10 Hz Decimation
17 #define CONV_FREQ (ANA_CLK/64/DECIMATION) // Conversion Frequency
18
19 #include <string.h>
20
21 #define INBUF_LEN 32 //数据长度
22
23 unsigned char inbuf1[INBUF_LEN];
24 unsigned char count3=0;
25
26 /*********************************************************************
27 *
28 * 函 数 名: Com_serial_init
29 * 功能描述: 串口初始化
30 * 函数说明:
31 * 调用函数: 在源程序开头定义是否用w77e58或22。1184M晶振
32 * 全局变量:
33 * 输 入: 无
34 * 返 回: 无
35 * 设 计 者: yang 日期: 2002-12-09
36 * 修 改 者: 日期:
37 * 版 本:
38 ***********************************************************************/
39 void comm_init (void)
40 {
41 1 EA = 0; //CPU中断 disable
42 1 /*
43 1 TR1 = 0; //stop timer 1
44 1 TMOD |= 0x20; // 定时器1模式: 2(8位自动装载)
45 1 CKCON |= 0x10; // Set timer 1 to clk/4 波特率*3
46 1 PCON |= 0x80; // 0x80=SMOD: 设置串口波特率倍频 波特率*2
47 1 TH1 = 0xec; //确定波特率的定时器1自动重装数据 6.0M 0xf9=4800
48 1
49 1 ET1 = 0; // disable timer 1 interrupt
50 1 TR1 = 1; //* 定时器1运行
51 1
52 1 SM0 = 0; SM1 = 1; // serial port MODE 1
53 1 SM2 = 0; // SM2=1时收到的第9位为1才置位RI_0标志
54 1 */
55 1 // CKCON = 0; // 0 MOVX cycle stretch CKCON 时钟控制
C51 COMPILER V7.50 COMM 11/17/2005 00:01:59 PAGE 2
56 1 // PDCON = 0x14; // turn on ADC-Vref, SPI and Systimers PDCON MSC1210 外围模块控制寄存
-器
57 1 REN = 1; //允许接收
58 1 TI = 0; //清除发送中断标志
59 1 RI = 0; //清除接收中断标志
60 1 ES = 1; //串口中断允许
61 1 PS = 0; //设量串口中断优先级低
62 1 EA = 1; //CPU中断允许
63 1 }
64
65
66 void Serial_init(void)
67 {
68 1 // Setup Serial Interface
69 1 T2CON = 0x34; // Use Timer 2 as baudrate generator
70 1 RCAP2H = (T2RELOAD >> 8); // baudrate reload factor
71 1 RCAP2L = T2RELOAD;
72 1 SCON = 0x52; // enable serial uart & receiver
73 1 P3DDRL &= 0xF0; // set port pins of UART to input/strong drive output
74 1 P3DDRL |= 0x07; // set port pins of UART to input/strong drive output
75 1 }
76
77
78
79 //向串口发送一个字符
80 void put_char_com(unsigned char ch)
81 {
82 1 SBUF=ch;
83 1 while(TI==0);
84 1 TI=0;
85 1 }
86
87 //向串口发送一个字符串,strlen为该字符串长度
88 void put_string_com(unsigned char *str,unsigned int strlen)
89 {
90 1 unsigned int k=0;
91 1 do
92 1 {
93 2 put_char_com(*(str + k));
94 2 k++;
95 2 } while(k < strlen);
96 1 }
97
98 void get_string_com(unsigned char *c ,unsigned char n)
99 {
100 1 unsigned char i;
101 1
102 1 while (count3 < n);
103 1
104 1 for (i=0;i<n;i++)
105 1 c[i]=inbuf1[i];
106 1
107 1 count3=0;
108 1 }
109
110 //串口接收中断函数
111 void serial () interrupt 4 using 3
112 {
113 1 if(RI)
114 1 {
115 2 RI = 0;
116 2 inbuf1[count3]=SBUF;
C51 COMPILER V7.50 COMM 11/17/2005 00:01:59 PAGE 3
117 2
118 2 if( (count3==(INBUF_LEN-1)))
119 2 count3=0;//如果串口接收的数据达到INBUF_LEN个
120 2 else
121 2 count3++;
122 2 }
123 1
124 1 // send_char_com(read_flag);
125 1 }
126
127
128
129
130
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 176 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = 33 8
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 + -