|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:
4 o6 N- a) E: W
" ^' z% \7 g9 c& a#include <reg51.h>
+ I$ ~: v' N9 F6 r# g7 a, {" F5 y* p#define MESSAGE_LEN 3 // 定义数据长度
4 N# o8 V U( |% l; J2 Y9 yunsigned char message[MESSAGE_LEN];, ?# f9 k+ V7 H
void init_serialcomm()+ V; i0 t5 @* i) w
{
" Q6 Z+ g" n0 y4 ?5 D1 } TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20% P* F$ \* w# E2 i( v: Q" }# r2 O0 s
TH1 = 0xfd;1 v( N4 w: O6 d5 K; t4 k" Y
TL1 = 0xfd;
9 }9 L! [( I" p s' y: { TR1 = 1;- y5 W! a* X+ ~% g$ ^' t. W
SCON = 0xd8;! M; ?- n C! K4 o5 q; K& F
PCON = 0x00;
" X. }+ a7 R* J# r' O- _! b IE = 0x90;
' i/ v7 B" J$ E3 C, Y} X/ P" r& W. A: }+ e8 t0 R
void putchar(unsigned char ch) // 串口发送一个字符
1 E$ k+ _! \1 ^, M; M0 Z I{, T' g" Y3 l1 h' r. e3 ]% k; w
SBUF = ch;
2 j4 u/ D% x2 V while (TI == 0);
8 P0 {# D9 ^% N r# }% A# q$ U9 l TI = 0; - g. d; ]: w$ V- [ K
}( X0 l8 U4 l, s3 F! Q
void send_message(void) // 串口发送字符串) A! }6 z C; ]$ x' J% t; {6 x
{$ J) |5 w6 X. K& A6 L
unsigned int i = 0;1 q* o) |/ F& R6 F8 g; u
do
$ q& ^% h$ N3 c+ Y, D {* C5 b8 }# s- M5 h2 ~5 o
putchar(message[i]);% I2 T3 d5 r1 C* y/ |9 \
i++; 3 K. H: t. y" O1 O6 ^
} while (i < MESSAGE_LEN);$ t9 E# a. g5 \ F
}5 J+ N8 Q! ^; G" E2 Y1 X
main()& ~( b: {! b0 ?. v$ H
{7 s# F. b* i. a3 T+ Q
message[MESSAGE_LEN] = {'M','C','S'};
7 {$ Y5 e( k# P9 R init_serialcomm();
" W3 }+ H' F+ `# H send_message();
2 R: H6 b& Y+ p+ m6 E. y}
4 s" V5 i8 `, C* O- p4 ]$ u+ i$ P ]. S1 C
使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
- Q; n: E+ K# B1 K% S8 S6 h本想显示“MCS”,为什么会显示错呢?" B4 s& P) P: I' A
N- Q2 U( X2 [" Y5 x2 }哪位高手可以指导一下呢? |
|