|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:: o0 J9 W* J5 X( U0 X: j" ~5 \
% w$ H7 u* {/ R8 N4 H#include <reg51.h>+ b& K' N9 z5 Y0 \3 H
#define MESSAGE_LEN 3 // 定义数据长度7 W/ `- E0 q w) F9 P: G! q: p. q
unsigned char message[MESSAGE_LEN];
8 _6 N/ q* a# d7 M2 Z$ N% r% Pvoid init_serialcomm(). R- n2 V# O4 y7 P1 Q* T
{% v1 E7 ]; w' p/ x! T& X5 N
TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X209 w6 n8 m5 _1 d8 k, \: s9 ^5 ?% L
TH1 = 0xfd;
) a7 ~; V$ ^( k, `, U5 M" Y TL1 = 0xfd;4 m; L4 H n' {, K* D7 M+ y# V
TR1 = 1;
* b- f5 N- X& r6 ?+ `) T SCON = 0xd8;
2 E2 Q: s( P' g C PCON = 0x00;, o' v1 D6 U, q
IE = 0x90;. _3 A: y! k/ p& e- } Y
}9 v, d" y, O- s/ ~1 i5 I4 H
void putchar(unsigned char ch) // 串口发送一个字符
7 @; r! t! m0 G* s8 H+ ~9 R+ A{: g( n3 X% r* f: g( l
SBUF = ch;8 T# t/ C- \ {+ a% z ^. T
while (TI == 0);7 K/ E; N3 `+ O+ Z4 U- D Y
TI = 0;
/ u2 M* H& R% \! s+ L3 n1 d5 U}+ d, x1 P% x! h" Z, v. q
void send_message(void) // 串口发送字符串& z, W* c# a* x% r( x* a9 G
{5 ^5 s' k4 M' I0 ?1 W) g& v7 s# z8 ?
unsigned int i = 0;8 q# _. {# V5 }
do
+ J4 W( p7 O" g' B {- q/ F N' Q7 y
putchar(message[i]);
( ]0 w) `9 |- w/ ?( y9 o i++;
; D; j% R9 M' {/ w } while (i < MESSAGE_LEN);# ]1 k' \1 @$ ?6 f- k8 t o
}9 j( p7 f ^& O9 A
main()* A' W: w2 \* c
{
1 o0 D; Z% d3 ~( k2 V* e message[MESSAGE_LEN] = {'M','C','S'};+ s5 l/ u, s3 F" V! \% n
init_serialcomm();
- i1 [8 ?. K I: M send_message();) @( o- t3 z% `4 z8 y+ {
}7 d o8 Z" Y* x+ W! F: ^! T( L6 w0 p3 x
0 k. u8 n' c- A l& f& ], G
使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”. [( k @6 u" O3 ~7 }" Q4 V4 `
本想显示“MCS”,为什么会显示错呢?
$ X1 d! S$ a3 G5 C+ {3 ?" e. z. _/ N- e' p
哪位高手可以指导一下呢? |
|