|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:. ]; a. h5 i0 |+ h- M
; {, {$ l5 K& y) c/ m#include <reg51.h>) a' _- M0 ]" o1 B
#define MESSAGE_LEN 3 // 定义数据长度
( O+ g0 \, H) h. ?; N, runsigned char message[MESSAGE_LEN];
, ^; \+ [" e( v; tvoid init_serialcomm()
4 k- g% ]7 N' J: u0 {{& V! t2 \3 T8 ]* m- Z& Q
TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20
% b, S& _ o. x2 { Q0 ?3 a TH1 = 0xfd;
! B* {8 J, v) I e, |6 Z TL1 = 0xfd;3 a# q. `/ w3 w% Z$ S) k+ L
TR1 = 1;
3 K" V! c0 O% f2 p SCON = 0xd8;& x6 p+ K) Q6 Q, ~- I% _3 X
PCON = 0x00;( x9 B w' t# ?5 D
IE = 0x90;( i/ O0 U3 L/ n }
}
; j2 n/ c; f6 m' _. c' Mvoid putchar(unsigned char ch) // 串口发送一个字符6 S: Q6 b3 n$ H3 T: G
{8 @2 W. h' W( n0 m5 h5 `3 @( q9 I' _
SBUF = ch;
+ c! |" t! L) s while (TI == 0);
/ v2 H% g* |% h) ?; w2 m TI = 0;
6 Y% ?2 ~% \! w& v% o& Y9 c' [$ Y' p' [/ ?} Y7 b! Z! I3 A; u
void send_message(void) // 串口发送字符串0 q2 I0 b6 W( ?5 B6 S; H& U
{" T; T7 `! e+ J
unsigned int i = 0;
2 l8 l# O" T4 t# [ do
" F5 X+ d! X# L: g) z! j4 Y {
6 e: ~2 |' z4 V1 Y" @& [# _# t putchar(message[i]);
& ?9 m" O" s; R i++;
$ y) n3 |* Y2 z: F2 l } while (i < MESSAGE_LEN);3 } }5 f( p5 G6 p( R$ a
}
: ^2 L0 V' s# _! c7 a/ \; ]$ mmain()
0 ]" ]- u' f6 }/ M* ?% Q1 [{
1 |! ^8 Z7 ]; z8 t3 o2 Y' ]- P7 Q message[MESSAGE_LEN] = {'M','C','S'};4 G/ T* c0 z- F9 |1 x2 a
init_serialcomm();- N8 Z9 I/ Z8 X. Z% v4 m4 d1 f
send_message();$ G; }/ |/ s+ z4 m( ~
}' U+ Z/ E' f7 j. g+ i! ~
: v6 n) W) \! X0 t8 Q使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”) u8 G, T9 `4 L n8 X
本想显示“MCS”,为什么会显示错呢?
! I( }8 I- D7 ?/ }3 G6 @9 p# R- n+ t: y0 q% K9 U
哪位高手可以指导一下呢? |
|