|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:& P$ Q& Y: M# n( V( Q3 z$ U
# l; D: K- c, ~
#include <reg51.h>
* B8 d4 ^& R+ i' h+ a' k3 g/ O#define MESSAGE_LEN 3 // 定义数据长度
" I7 u% [$ Z0 C" Hunsigned char message[MESSAGE_LEN];
# v; x1 D# C2 P1 S. y% e0 c/ z+ R! Tvoid init_serialcomm()
" o$ w: X4 d. I% `' t{
0 ^+ j6 F6 W5 t0 y5 v* D TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20. y' o, _& k( v" `% e; k& {) v1 g
TH1 = 0xfd;4 Z- b% L: Z2 {7 h
TL1 = 0xfd;* [/ h- q p$ [/ y, w
TR1 = 1;, }& L7 c' {; M. x" P
SCON = 0xd8;
& v! a! f6 h5 J+ e PCON = 0x00;9 c6 w& R/ `6 Y: a3 ~4 ~% E
IE = 0x90;( d# e8 _6 r6 Z/ L
}$ L$ N9 C% H) p3 Q" p4 E
void putchar(unsigned char ch) // 串口发送一个字符 Y: l1 Z8 A* b& l/ P, @* d
{+ S9 N5 x; C3 ?; t: u, P
SBUF = ch;7 k3 Y- x6 P5 m) o1 G$ {" u
while (TI == 0);; m# F* z% H G6 Y
TI = 0; ' t# g+ Y9 X8 P& o0 {
}( x0 h( L) J u T8 v
void send_message(void) // 串口发送字符串
5 E1 T& t& \( c I4 ]; @& G* i{
1 x, G' M. }3 T1 f0 l5 [+ H unsigned int i = 0;
5 {3 H, d) J1 T: k% h3 q0 g do
! V0 C( v T0 k @5 o8 n {8 _. i- Y/ A, Z; A& x
putchar(message[i]);
6 Y- r/ K' F4 p- W, e9 r i++;
6 {* e W, l" T9 v. n6 y& w } while (i < MESSAGE_LEN);
5 P3 h$ ]" W& c/ S}/ l8 M/ X9 W, P" H
main()
' h9 c7 D' }7 V; u{
% a( {+ R$ z! h" |3 \ message[MESSAGE_LEN] = {'M','C','S'}; t! V) [3 X* d' H% U6 i* \
init_serialcomm();
( F/ E$ w* v8 O9 F: N send_message();
# Z, p$ u( U/ Y6 z( O}
+ j3 P2 H; X$ r; e- s
" m6 V: T6 l4 e3 ?% D1 Y/ T使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
6 `: f4 `" o/ L3 W. E' o, C本想显示“MCS”,为什么会显示错呢?
3 ~4 z/ n$ z- O$ Y6 C8 ^2 f
( h( @) e' P3 S# X1 O5 P* C: n! ^哪位高手可以指导一下呢? |
|