用现代单片机写的模拟串口程序不知道哪里出了问题

2019-07-15 18:16发布

  1. #include <intrins.h>
  2. #include "MC96F6432.h"
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit TXD = P1^6;
  6. sbit RXD = P0^5;
  7. uchar temp2=0;
  8. void Uartinit()
  9. {        
  10.         /*IO口设置*/
  11.         P3FSR = 0x00;        //Port3 端口功能设置为I/O口
  12.         P3    = 0x00;
  13.         P3IO  = 0xC0;        //P37、P36设置成输出状态
  14.         P3PU  = 0x00;
  15.         P0FSRH= 0x00;
  16.         P0FSRL= 0x00;
  17.         P0    = 0x00;
  18.         P0IO  = 0x00;
  19.         P1FSRH = 0x00;
  20.         P1    = 0x00;
  21.         P1IO  = 0x40;
  22.         P5FSR = 0x10;
  23.         P5IO        =  0x1D;        
  24.         P5PU        =  0xE0;
  25.         OSCCR = 0x08;        //系统时钟设置为1MHZ
  26.         SCCR  = 0x00;
  27.         /*定时器设置*/
  28.         T0CR = 0x80;        //开启定时器
  29.         T0DR = 208;         
  30. //        IE   = 0x80;        //开启总中断
  31. //        IE2  = 0x02;        //开启定时器0中断
  32. }

  33. void wait(void)
  34. {
  35.         while(!((EIFLAG1&0x40)==0x40));
  36.         EIFLAG1 = 0x00;
  37.         T0DR = 208;

  38. }

  39. uchar RByte()
  40. {
  41.         uchar temp=0;
  42.         uchar i;
  43.         wait();
  44.         for(i=0;i<8;i++)
  45.         {
  46.                 temp>>=1;
  47.                 if(RXD)
  48.                 {
  49.                         temp|=0x80;
  50.                 }
  51.                 wait();
  52.         }
  53.         return temp;
  54. }

  55. void WByte(uchar temp1)
  56. {
  57.         uchar j;
  58.         TXD =0;                //送起始位
  59.         wait();
  60.         for(j=0;j<8;j++)
  61.         {
  62.                 TXD = (bit)(temp1&0x01);
  63.                 wait();
  64.                 temp1>>=1;        
  65.         }
  66.         TXD =(bit)1;
  67.         wait();        
  68. }

  69. void main()
  70. {
  71.         UartInit();
  72.         while(1)
  73.         {
  74.                 WByte(0x55);        
  75.         }
  76. }

复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
阿信509
1楼-- · 2019-07-15 22:28
你的晶振是多少的呀?你初始化后相当于波特率是多少呀
ch532328066
2楼-- · 2019-07-16 03:32
 精彩回答 2  元偷偷看……
ch532328066
3楼-- · 2019-07-16 08:15
阿信509 发表于 2014-10-21 17:14
你的晶振是多少的呀?你初始化后相当于波特率是多少呀

系统时钟配置1MHZ,定时器定时208
阿信509
4楼-- · 2019-07-16 12:21
你的程序什么现象呀,是发不出数据还是发的数据不对呢
ch532328066
5楼-- · 2019-07-16 16:44
阿信509 发表于 2014-10-22 09:15
你的程序什么现象呀,是发不出数据还是发的数据不对呢

现在可以了,波特率没设置好
woodmice
6楼-- · 2019-07-16 20:40
ch532328066 发表于 2014-10-23 11:05
现在可以了,波特率没设置好


一周热门 更多>