|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:! N4 _- d( R9 f/ q/ Z8 C
: W- l* t( X2 m( X#include <reg51.h>
8 Q* N8 G- [ h% ~# H5 l#define MESSAGE_LEN 3 // 定义数据长度
5 m5 @! x) i% munsigned char message[MESSAGE_LEN];/ G+ e u ~/ x/ t$ v2 ~; D
void init_serialcomm()4 R3 n% D) G' k8 ^0 [: E7 L
{
: `8 n Y9 q# q, ^ TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20
5 P* e0 Z! p" V' S, Q TH1 = 0xfd;
! C% T% [' i; u9 i TL1 = 0xfd;
6 F3 g+ \; s/ Q TR1 = 1;+ c/ l7 u: \+ j; l0 Z) b
SCON = 0xd8;
3 P( p/ U B; s, q3 b7 y PCON = 0x00;# ?! ^' U7 }5 a# ^3 Z
IE = 0x90;" e6 \0 f% @2 B: P5 Y* b) B
}
4 y$ a! \3 v$ H4 l1 U$ l" N/ Pvoid putchar(unsigned char ch) // 串口发送一个字符. R+ ? e$ O9 K7 U
{
7 {! ]1 A1 m- p! [# q2 ]. S SBUF = ch;
3 F! ]% x) D, n# r while (TI == 0);4 T( m c R$ w1 a4 b
TI = 0; ( x' g3 Q0 L; {; r! h
}0 O( F9 s7 W2 ~; Y1 l# S
void send_message(void) // 串口发送字符串3 I3 j( j8 m" r7 H* Y9 r; {
{
" I- L9 C2 z! V1 F4 S unsigned int i = 0;& g& l1 ~1 a) o g( w0 G
do
' X5 { Z" F# c; b {
8 q5 @ N- B' q3 |- m: ]9 Q4 ~3 p6 T putchar(message[i]);/ _& S( D. v$ @4 c( s0 S9 f
i++;
+ a" J. ]9 E+ x9 s4 Z7 C4 k* y8 |, u& j } while (i < MESSAGE_LEN);
1 W( O8 x( o- Q}: \$ r4 v- [# I2 K
main()& c! N1 k8 B# V" E+ c
{/ g; \" R9 o+ N
message[MESSAGE_LEN] = {'M','C','S'};
" x: I; I+ b& ~# O, B" x; ]9 t+ R init_serialcomm();# V2 B9 [. R; U- t3 d: M
send_message();
- U4 V) t/ F' s* u}6 ~- r6 K+ W* e8 d! l4 W$ E
, n$ i6 s" U. A- L8 @9 Q) D
使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”4 c: J! u, `0 ?! t
本想显示“MCS”,为什么会显示错呢?
$ [$ M3 B; u- h5 r/ H: U) H" h1 b1 z7 |9 k' O: \* u2 o# ^
哪位高手可以指导一下呢? |
|