|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:
6 H6 E: o9 }" W) l% K; {
+ w, W/ E% q4 Q5 g3 c2 P#include <reg51.h>9 O) F5 X- O* a7 X9 C
#define MESSAGE_LEN 3 // 定义数据长度+ y6 ]; J' n! V+ `5 j
unsigned char message[MESSAGE_LEN];
3 {$ ?8 h$ D* _) L6 K6 o* Cvoid init_serialcomm()
0 w$ H" R( E7 l: z% ?4 A{
- ~ M3 ~! E3 t/ w) z# |! J' \ TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X206 m6 O1 n9 Z# L8 O3 [2 H' F, h
TH1 = 0xfd;
, ?6 f1 t/ ^3 |" j! w# W+ P TL1 = 0xfd;
. w- D8 X$ E* T e0 I" Y TR1 = 1;
; f# z1 |4 b2 c) o SCON = 0xd8;& L2 T! v7 b+ i5 U+ o
PCON = 0x00;
3 ^1 H* i+ r A+ q IE = 0x90;" _' A3 h* y" F8 W# f7 t1 T
}
0 P7 R* D6 G1 d9 y1 z, l9 rvoid putchar(unsigned char ch) // 串口发送一个字符# R: w4 \4 V5 w; O& R3 P" {
{, M! e- G6 p+ d2 l7 G
SBUF = ch;- {& T1 `$ U* A9 |' ?3 [2 y e, Y
while (TI == 0); u! C% A6 d; A# [; w
TI = 0; % @; d# ^ T( [2 m, X2 E$ i
}2 G9 W$ I) o2 n& g
void send_message(void) // 串口发送字符串
6 ~# z) C0 P- y) Z3 d2 q{
( l7 h6 L' q) V/ `' E4 R unsigned int i = 0;; v7 l, [+ ?, d0 B
do
$ Y7 l+ l; D$ v8 y6 g: ^$ C& O {
/ [: K7 _7 f0 }1 H0 K/ q1 X putchar(message[i]); ]' K: `6 W- _6 Y0 B
i++; 4 b( h. K7 |" \* c4 J e
} while (i < MESSAGE_LEN);
* ]7 a6 h3 M# Q( I! u$ H9 @7 C5 ]}
2 {7 D8 W* [' I+ H1 u# l8 Imain()
& b- N: l6 v! s* k{& Z( E9 X/ l6 w- T
message[MESSAGE_LEN] = {'M','C','S'};% }+ X0 ?2 I0 ~; M0 ~. y
init_serialcomm();+ \0 S# R e: e9 a0 h# }
send_message();
; {6 Z5 }, `3 L, {/ o}
, u/ g) Q5 |) c/ Q: ]; J2 D4 Z8 i3 s- d7 \5 B
使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
/ s/ H# Q; s( m7 m本想显示“MCS”,为什么会显示错呢?
) }$ ]* U0 A8 q5 g8 H# G% Z. d9 d+ C7 a* M
哪位高手可以指导一下呢? |
|