|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:5 L A' V% F( s1 \! y. p
3 k! w2 ^7 d9 {8 _& [
#include <reg51.h>/ D0 o7 P: g/ y5 w w4 ^2 A
#define MESSAGE_LEN 3 // 定义数据长度
; W- R$ a5 C: a9 K+ ?' Dunsigned char message[MESSAGE_LEN];
1 d8 V3 ?- c9 _. c* r2 _void init_serialcomm()( X' S8 K. m1 W& O* Q+ ]
{
" |+ [- b( e& e8 H TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20
& N5 Q" I3 A) z/ R( T* O0 { TH1 = 0xfd;7 V' z, O( ~: ?
TL1 = 0xfd;! h6 k# g/ ~1 Z r! ]4 z' _6 S
TR1 = 1;
8 d3 {0 e7 E5 h( c$ _& O SCON = 0xd8;' x8 `5 T6 X5 d
PCON = 0x00;, L3 y! J, z' R0 q' E& ~ {
IE = 0x90;* q2 \* c* P( U# p
}
0 M5 l& d1 `9 bvoid putchar(unsigned char ch) // 串口发送一个字符! ^) R" A+ s! q2 `2 N
{
+ P- r# {' L u- l9 Q SBUF = ch;
5 p% G E+ I4 ?! K while (TI == 0);
8 N0 l A. _/ z' ~* u TI = 0; ; g, Q4 W9 d* Z2 b4 c5 y
}. N' `& K% ]+ P$ s0 L9 O2 H( S
void send_message(void) // 串口发送字符串
! g* ~. m) w4 J3 u* w2 M{
7 f/ Z( r! ^9 n% ` unsigned int i = 0;
9 \# m6 t( ~$ G! X. \ do
/ t: c9 U; D& H9 m+ H% { {
0 ^1 P/ ^, }+ |, x2 b6 n putchar(message[i]);3 s1 w( s- M# y" C6 A0 Y
i++; 2 e9 `( D9 O. |9 H4 b) k' m6 P7 `
} while (i < MESSAGE_LEN);
, u# d% D6 n' o}" H( t. b* G2 E7 i% i, h7 n1 X
main()
! W% i4 T) i4 E L{
3 K, J- M' F" O; [- M2 b) G message[MESSAGE_LEN] = {'M','C','S'};- `& A4 x/ X& Z1 x! b7 D
init_serialcomm();1 z& s- K9 W3 B
send_message();
2 S* [0 Z3 u3 L9 d& z4 T: S% k}
5 {- ?( C5 w1 F; D. T2 ~" [2 {/ q w+ A: ]/ z2 f6 x
使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
% \9 [; Q+ P8 ^/ T+ y7 x本想显示“MCS”,为什么会显示错呢?/ Z$ y5 m: U3 E+ T6 q- C
; r/ |: y6 v z! o& s( @' u* C: q哪位高手可以指导一下呢? |
|