|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:( k V4 Z5 a% t
& Z2 U4 I5 G1 _; [" f#include <reg51.h>2 m0 M" z8 @& S" Q
#define MESSAGE_LEN 3 // 定义数据长度
# z1 g8 C4 X- o) N+ R3 \unsigned char message[MESSAGE_LEN];6 r+ \9 E' N0 \+ Z2 L
void init_serialcomm()
% u. r) ?! l6 d+ `{" k ] i& E3 J( _" [; B
TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X203 F( \ P& h1 V# f! Q" J
TH1 = 0xfd;
! T) p( g; \' s0 X TL1 = 0xfd;
$ h& V( X9 }; a) ?; N TR1 = 1;
# m3 j) O1 [+ w8 ~; s8 f# F; z SCON = 0xd8;5 _- v5 b* \* y' ]) M
PCON = 0x00;
. B9 b/ b# N$ e6 r IE = 0x90;) O& a& d ~3 ] D
}( T% a2 @+ N# p5 v% {; ^
void putchar(unsigned char ch) // 串口发送一个字符
1 n$ B8 @. A; N! W5 _1 |{
: F- T! p& U4 t2 o$ Z SBUF = ch; O5 N2 B( _3 P* p1 w
while (TI == 0);
* t6 N) w; g" ^+ v. J0 o" v TI = 0;
3 L8 z; i. K# M}
3 A9 o" K2 g& C1 mvoid send_message(void) // 串口发送字符串# Q8 ^( f1 R& ?/ T6 O
{, V. ~9 m6 c' m7 U' D6 u' g
unsigned int i = 0;
# z1 J8 G5 P6 ^8 a% i) [) \ do
3 Y" V3 G/ b2 R7 ]$ x# j* G: s# X {( D i) U; J$ H# f1 ~6 d
putchar(message[i]);
3 c+ G. t8 y- i# ? i++;
6 ^) J+ {' }: @& f; m } while (i < MESSAGE_LEN);% j+ u0 l' e0 h+ p9 y$ d0 K2 l1 {5 S( R
}$ A2 f: U5 M2 ? U* L: ^) |
main()1 `% x" A) L) b
{+ K2 j$ l3 L: [0 L) e" L
message[MESSAGE_LEN] = {'M','C','S'};' x+ W/ i. {( w" n8 O7 v
init_serialcomm();, H+ @( w& F6 u% {: H/ c
send_message();
$ U/ l7 J' X. t7 A1 A}5 A1 T; f9 Q# w r$ y- Y! h
" ? [- ]% c6 i; _; T
使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”) F% J9 ~3 [; _5 T, r- I( N2 f( s7 i- E% F
本想显示“MCS”,为什么会显示错呢?
6 N! L% b: ?( F' q2 k/ Z6 K6 \
. W. E% w3 m4 }/ t& x5 j( T& l哪位高手可以指导一下呢? |
|