|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:
5 }0 |: U6 p" `& j! y
. T- y& C9 q8 \3 D#include <reg51.h>
5 |/ p+ E* r8 {( {, Y% ]5 g. _#define MESSAGE_LEN 3 // 定义数据长度# k: h$ e- |6 s6 A. m! h9 ?
unsigned char message[MESSAGE_LEN];
0 T2 S1 c( U* d7 ~: W/ G B$ g+ Xvoid init_serialcomm()' \. j( ]$ U( B7 ~5 c
{
: C1 A/ J! y$ C8 `: a- k% V TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20
, U" D1 |4 s1 d1 E% b3 P8 s TH1 = 0xfd;
6 I8 \6 Y% _! J- |- B TL1 = 0xfd;# y/ ?( P1 b9 ?/ q* q
TR1 = 1;& T& ?: [5 E! ^% R9 }5 |1 l: d- |) w6 n( ^
SCON = 0xd8;
' C4 f* l/ C+ `/ W, \ PCON = 0x00;
2 X/ N5 p" G9 L. g0 [4 h IE = 0x90;( D4 f4 q9 K9 D! z4 j& G, G
}
2 [3 O- ?5 j- ivoid putchar(unsigned char ch) // 串口发送一个字符0 b' q. P# B, O: z8 M
{- P5 }5 {# c! [3 g$ h
SBUF = ch;
; d6 D% E' R! Y" B while (TI == 0);
( h/ L2 j1 `; e TI = 0;
" ?! V8 g$ J( a6 f: B4 E/ H}
; Y, v$ ^( a( f6 g, L: `% [void send_message(void) // 串口发送字符串
$ x; {6 z& t$ S9 {{; e- D7 a+ O" M) u6 F2 {: v
unsigned int i = 0;. t# q7 u- l% n9 U; k
do
# P" b" l/ g* k6 ]0 G {
@1 g j6 _/ [# ]/ n putchar(message[i]);
7 o6 j: {* T6 N9 h i++;
5 T# G5 T" Z) H0 C } while (i < MESSAGE_LEN);* N6 |' I0 l+ [+ p5 V" h3 v
}
8 V7 |& ^0 r9 D/ P jmain()
: L' C4 @+ S% U+ G* x' k% Q{# m; e; F3 |. K' c" `4 y
message[MESSAGE_LEN] = {'M','C','S'};
0 L( _1 A. {& W init_serialcomm();
0 y& _: \- p, r f+ t: l6 M, B send_message();
3 @, @. \. \0 D* d% b- O}
- @* h) O! ?' K* D* u/ U1 j4 i
# r. Q8 u1 v6 I# n使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”: W9 g; R& J5 N, E
本想显示“MCS”,为什么会显示错呢?% L0 F; M: N X5 w1 b7 Q
, f( Y' p" f; F
哪位高手可以指导一下呢? |
|