|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:
; [$ K2 I# @0 _. m% O+ F# z" F2 f9 C, s
#include <reg51.h>& z7 d. }1 E+ s8 V B4 s
#define MESSAGE_LEN 3 // 定义数据长度% D% K6 w5 I: k. P3 T! W
unsigned char message[MESSAGE_LEN];! r, M. q9 [( q3 a" A$ x7 Z
void init_serialcomm()
3 a3 D& c4 F2 Z4 O$ F{, X4 f- a3 ~, X) h) s" ]( W" c, F
TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20, f! x( \" L: d/ C! X* W) y
TH1 = 0xfd;9 l* u8 l) N0 p9 N6 q; z* Z" P
TL1 = 0xfd;
+ H+ }% x/ ~6 W6 w: [, L6 c* o TR1 = 1;
8 T- D2 g2 N4 G SCON = 0xd8;
* B" A; i* e7 _/ S+ j8 G PCON = 0x00;* V% M; l3 B3 L
IE = 0x90;
2 b" q' f; v6 l5 j* ~}
L: ]3 h k) @void putchar(unsigned char ch) // 串口发送一个字符3 u- N6 [& {* U0 E+ R$ M
{
0 |; o4 J; a, M- R4 V. T SBUF = ch;
/ Y! e3 |4 M+ {# U while (TI == 0);% Q/ ^: @+ E) v1 |+ T! r7 Q5 @" T
TI = 0; ) p7 n* O1 k" Y, Y2 F- [# [7 M' K0 ?* [
}
, W8 V8 X) Z& A" \/ h9 ^3 dvoid send_message(void) // 串口发送字符串
$ ~% Z4 u" {/ k/ @2 v7 k, M{/ s9 E. z3 k$ Z! H+ q6 T
unsigned int i = 0;
8 M. E( e* H2 E1 W0 D do6 a/ L9 D5 r/ M2 w! N
{* g$ e- j+ q$ ?* `& w
putchar(message[i]);4 R/ h6 F- I8 G: Y6 E# v
i++;
2 y8 U; A! A& \" { } while (i < MESSAGE_LEN);2 f3 o; D1 R3 d% n, U- X
}/ v0 _# N. _/ e/ F3 l% r6 L1 i0 U
main()
. E( Q9 e% l$ X, O" W8 N{
* U0 }; F" C3 i( n message[MESSAGE_LEN] = {'M','C','S'};
9 O/ H8 G9 f- k- n- S9 y) T9 u$ | init_serialcomm();: z5 g( S7 U$ y
send_message();
6 E* V8 H- S' Q* m. C, {2 y}
5 ~% H# c5 n# p. t
6 M7 ]% Q! u' w+ t使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
/ S' O1 o: h& \, @- G+ O5 p本想显示“MCS”,为什么会显示错呢?2 y0 H2 F& [% m* c( b( A
$ O$ \, W0 Z& b- q
哪位高手可以指导一下呢? |
|