|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:0 e1 c Y6 \( W2 W y
+ L4 \: {( P: D9 {3 P6 _* J+ [#include <reg51.h>+ @5 _! t( I6 J1 g" c8 B
#define MESSAGE_LEN 3 // 定义数据长度
( \) C; l6 M* ?$ Vunsigned char message[MESSAGE_LEN];
2 l& X, Q5 r5 ~2 a# d% s3 ^* U3 dvoid init_serialcomm()
# S8 [; v1 e( y" L' J{: \2 O0 r5 u5 {3 t! D8 l: [
TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20+ `2 Q3 F( q# I# |$ x6 W* n+ y5 O# d6 ]7 o0 x
TH1 = 0xfd;
& v& _+ J7 ?0 t TL1 = 0xfd;
; P ?, l& u! s4 N' D# m( x TR1 = 1;" c/ w2 G5 `& `) S# T9 n$ i
SCON = 0xd8;
: N) X; q+ L# X PCON = 0x00;6 Z3 w- _7 [. ^3 M0 _" E5 `1 c
IE = 0x90;
# F5 f+ Q# |% M) z( h}
. m: {& Y; j: l4 u; I: j4 pvoid putchar(unsigned char ch) // 串口发送一个字符
5 l Y1 z) j" p+ Q{
( o& G s3 Y+ M$ C3 Z- K SBUF = ch;
2 ^# e: g5 l; D6 c+ U while (TI == 0);/ Y; Q2 U, n* D( O+ C/ [
TI = 0; , x* x2 I" x( l, q+ s' Q7 A
}) j+ ~5 a1 O& A$ y/ }1 G$ g0 d
void send_message(void) // 串口发送字符串5 w9 T, D0 ~6 ?/ x$ A: y. q& f
{" C b0 f, _( r2 [2 y
unsigned int i = 0;9 D: t# ?# x2 {
do0 Y, W; U; A5 F* v' h! M) }- R
{, I( X& r. H: T! N N6 U* h
putchar(message[i]);- E' s$ h, W' l# a
i++;
6 o0 ^4 R" n( g# U5 U" Y- V } while (i < MESSAGE_LEN);
. A6 t6 a" f4 f}
3 r: c9 a0 {! N' T" n ~# ?; Hmain()
8 K7 F; s4 R3 j, x$ E4 D{
2 Q& Q1 Y4 P* V' b message[MESSAGE_LEN] = {'M','C','S'};/ M: u4 H4 r+ I v l! X3 A- M# y
init_serialcomm();
8 W# i) p) Q# R' V' B# i send_message();) f. v$ ~2 l, I9 S" [; k
}7 ~( ?7 V$ ~; I4 s- c" G0 o$ V
& {- _2 g& B: I使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
, ^# _. ?# _3 k4 z2 |# {本想显示“MCS”,为什么会显示错呢?% B* \- c Q( l7 N5 ^
( O1 n9 l/ N: [5 }哪位高手可以指导一下呢? |
|