迪文科技论坛

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: dwinForumAdmin

【转载】【09.教学视频】T5L C51 UART串口

[复制链接]

9

主题

19

回帖

118

积分

注册会员

Rank: 2

积分
118
发表于 2023-4-6 23:36:07 | 显示全部楼层
请问屏幕没有显示,会是什么问题?
回复

使用道具 举报

9

主题

19

回帖

118

积分

注册会员

Rank: 2

积分
118
发表于 2023-4-6 23:39:05 | 显示全部楼层

能否细说一下
回复

使用道具 举报

5

主题

19

回帖

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2023-4-12 15:10:52 | 显示全部楼层
uart2_buf[uart2_rx_sta++] = res这条语句uart2_rx_sta初值是0, uart2_rx_sta++就变成了1,接收到的第一个字节赋给了uart2_buf【1】吗,uart2_buf[0]留着干啥用?
回复

使用道具 举报

0

主题

1276

回帖

5288

积分

论坛元老

Rank: 8Rank: 8

积分
5288
发表于 2023-4-12 15:55:55 | 显示全部楼层
baiyutang 发表于 2023-4-12 15:10
uart2_buf = res这条语句uart2_rx_sta初值是0, uart2_rx_sta++就变成了1,接收到的第一个字节赋给了uart2_ ...

这里应该是取了 uart2_rx_sta的值之后再自增。
回复

使用道具 举报

5

主题

19

回帖

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2023-4-13 14:36:30 | 显示全部楼层
integer_32 发表于 2023-4-12 15:55
这里应该是取了 uart2_rx_sta的值之后再自增。

谢谢。年头太多了,基础知识都忘光了。
回复

使用道具 举报

2

主题

13

回帖

97

积分

注册会员

Rank: 2

积分
97
发表于 2024-11-12 17:05:11 | 显示全部楼层
void uart2_isr()        interrupt 4
{
        u8 rec;//½ÓÊÕÊý¾ÝµÄÖмä±äÁ¿
        u16 crc16_cal;//CRC16УÑé·µ»Ø´æ´¢±äÁ¿
  u8 crch,crcl;//CRC16УÑé¸ßλµÍλ
        if(RI0)//ÊÇ´®¿Ú½ÓÊÜÖжÏ
        {
                RI0 = 0;//Çå³ý½ÓÊÜÖжϱêÖ¾
                rec= SBUF0;//¶ÁÈ¡Êý¾Ý       
                if(recv_flag == 0)//Êý¾ÝÊÇ·ñ´¦ÀíÍê±Ï£¬´¦ÀíÍê±Ï£¬flag=0
                {
                switch(step)
                {
                        case 0://½âÎöÖ¡Í·Æðʼλ
                        {
                             if((rec >= 0x01)&&(rec<=0x10))
                                         {
                                                  recv_buf[index] = rec;        //cnt=0
                                     index = 1;
                                                  step = 1;       
                                                 // u2_send_byte('A');
                                         }
                                         else
                                         {
                                                  index = 0;
                                                  step = 0;
                                         }                                 
                                break;
                                 }
                        case 1://½ÓÊÕ³¤¶È
                        {
                                       recv_buf[index] = rec;
                                       if( recv_buf[index] == 7)
                                                         {
                                                                 index = 2;
                                                                 step = 2;
                                                         }
                                                         else
                                                                 {
                                                                         index = 0;
                                                                         step = 0;
                                                         }
                                                                         break;
                        }
                                case 2://½ÓÊÕ¹¦ÄÜÂë 01 02 03 04 05 06 07 08 09 0a 0b
                                {
                                        if((rec >= 0x01)&&(rec <= 0x0B))//ÔÚ¹¦ÄÜÂ뷶Χ֮¼ä
                                        {
                                         recv_buf[index] = rec;
                                                index = 3;
                                                step = 3;
                                        }
                                                        else
                                                        {
                                                                index = 0;
                                                                step = 0;
                                                        }
                                break;
                                                }
                                case 3: //½ÓÊÕÊý¾Ý(¸ß×Ö½Ú)
                                {
                                        recv_buf[index]=rec;
                                        index = 4;
                                        step = 4;
                                        break;
                                }
                                case 4://½ÓÊÕÊý¾Ý((µÍ×Ö½Ú)  
                                {
                                        recv_buf[index]=rec;//Êý¾Ýλ½ÓÊÕÍê±Ï
                                        index = 5;
                                        step = 5;
                                        crc16_cal= CRC_16_int(recv_buf,5);//¼ÆËãÇ°5¸ö×Ö½ÚµÄcrc16Öµ
                                  crcl= crc16_cal & 0xFF;//CRC16УÑéµÍ×Ö½Ú
                                        crch = crc16_cal >> 8;//CRC16УÑé¸ß×Ö½Ú
         break;                                       
                                }
                                case 5://УÑéCRC16µÍ×Ö½Ú
                                {
                                        if(rec == crcl)
                                        {
                                                step = 6;
                                        }
                                        else
                                                {
                                                        step = 0;
                                        }
                                                break;
                                }
                                case 6://УÑéCRC16¸ß×Ö½Ú
                                {
                                        if(rec == crch)//ÈôУÑéÕýÈ·
                                        {
                                                index = 0;
                                                step = 0;
                                                recv_flag = 1;//±ê־λÖÃ1£¬´ú±íÊý¾Ý½ÓÊճɹ¦
                                        }
                                        else
                                                {
                                                        index = 0;
                                                   step = 0;
                                        }
                                                break;
                                }
                               
                }
                }
        }
}我写的这个接收不了数据
回复

使用道具 举报

0

主题

99

回帖

1493

积分

金牌会员

Rank: 6Rank: 6

积分
1493
发表于 2024-11-12 17:50:58 | 显示全部楼层
小虎同学 发表于 2024-11-12 17:05
void uart2_isr()        interrupt 4
{
        u8 rec;//½ÓÊÕÊý¾ÝµÄÖмä±äÁ¿

可以借鉴下这个代码,不要在中断中写解析,中断中就把接收的数据保存下来就行。解析单独写函数

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-21 23:11 , Processed in 0.078900 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表