|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:+ M' H( x$ G1 i* c4 e8 [* f6 f
5 |3 i+ J ~& _/ W8 g+ K, U#include <reg51.h>
_% y) \8 w' v" `$ [) i#define MESSAGE_LEN 3 // 定义数据长度
; ^' O! A9 A$ \0 P0 }unsigned char message[MESSAGE_LEN];6 I: j3 q8 ~- n, V6 W) p3 H9 |
void init_serialcomm()
7 W0 O5 X% J: R{3 `3 g/ r7 z1 O0 z& u/ X( G# D* \- ]
TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20
+ N" d% G' g: [' [) C' I TH1 = 0xfd;8 _8 Q7 {9 n7 m
TL1 = 0xfd;' b1 J! s/ |) K/ D4 X
TR1 = 1;2 B9 X; e1 U) ]; |' V. S
SCON = 0xd8;# n$ [( w! d( ]+ S
PCON = 0x00;; l7 v9 l* T9 p0 v, _' _: ^- j
IE = 0x90;$ F+ f, s* o: ~, t; {
}5 z I1 i4 k5 m$ J' f9 a: i
void putchar(unsigned char ch) // 串口发送一个字符
" O, j% D: |# W+ y# Y{/ i. z' Y: y8 |+ g) h+ S
SBUF = ch;
2 ~, D' M1 o" S# Z* t/ Q. N while (TI == 0);) n% d5 t& l$ V( v. |# R0 Y
TI = 0;
0 t+ B( \0 T( y( d}( H2 j z% `3 ^- r, T6 i8 T
void send_message(void) // 串口发送字符串
$ z O$ G9 |. V{( Y; e$ }& k2 y" o8 Q
unsigned int i = 0;
. g* X+ j) w; ?( z ]1 Q do8 q, Y) ]4 P s4 L5 ~9 N
{
2 _( Y# W! ^2 q0 F- s% [ putchar(message[i]);7 Z: k4 z8 R3 O5 w6 m4 i
i++; 9 b# B* N! v" J( Y* D# W
} while (i < MESSAGE_LEN);
8 ]( V& C$ c; U) ]% r! m. ]}
4 T9 H7 \0 b2 C! p, X/ Lmain()
1 ?% Q2 S3 _' g+ c{
# v9 g/ V" L; c2 l9 S0 m4 u message[MESSAGE_LEN] = {'M','C','S'};
! {6 b0 E3 O* ^9 F9 F1 @! j, d/ `4 T init_serialcomm();! j1 t2 \9 M2 J. r1 _1 |8 Q6 h: S
send_message();
2 c- i7 W }( S U, X5 b3 K1 W}7 ^3 ]# l! W F. \4 J2 A' G
: [9 i9 f" Y1 E! I+ {使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
2 I/ O1 A( S5 J本想显示“MCS”,为什么会显示错呢?
+ P- i7 m3 D$ K+ \0 s
; m( F( D" [6 f; l" ^6 Y哪位高手可以指导一下呢? |
|