圣龙扬特-AVR电子

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1436|回复: 0
打印 上一主题 下一主题

bascom avr 接收不定长数据

[复制链接]

11

主题

0

好友

3245

积分

版主

Rank: 7Rank: 7Rank: 7

UID
45
帖子
31
精华
0
注册时间
2013-2-27
在线时间
29 小时
跳转到指定楼层
楼主
发表于 2019-10-23 21:37:42 |只看该作者 |倒序浏览
看到STM32接收完成中断,找了好久也没见AVR有类似功能,用定时器自己做了个,以在项目上验证过了


'*数据每接收完成桢进行处理,两桢数据之间的发送不能小于3MS间隔 *
'*数据接收有T1 和串口接收程序来完成                           *
'**************************************************************
''*****************接收数据调用数据处理**********************************************
if timer0_start_flag=1 and usart_counter>=3 then  ''****如果定时器已打开表示有数据接收AND定定时器大于3****''
     stop timer0                                  ''****关闭定时器****''
     usart_counter=0                              ''****串口接收标志清零****''
     timer0_start_flag=0                          ''****串口打开标志清零****''
     gosub data_processing                        ''****进行数据处理****''
     gosub clean                                  ''****清空缓存****''
endif
''**********************定时器零一MS定时器用来判断串口接收帧完成标志***********************
timer_usart:
'Capture0=246
counter0=246
if usart_counter<100 then
   incr usart_counter
endif
return
''**************************************串口服务程序***************************************
usart_1:
incr i
if timer0_start_flag=0 then             ''***第一次进入串口打开定时器1开始计时*****''
   start timer0
   timer0_start_flag=1                  ''****把定时器打开标志置一表示已打开下次进入时不再执行,此位主程序里接收完成置零****''
endif
usart_counter=0                         ''****每次进入都把计数清零,当接收完成不再清零大于3MS后在主程序关闭定时器等待下次接收****''
usart_reveive_buf(i)=inkey(#1)
return
''

点评

尹雅梅  请看x.co/ydd(网址) 肺炎一线照片现惊人一幕 ,番习土啬看国内不报道的新闻...... git.io/gmmmm (网址)  发表于 2020-7-6 22:50
回复

使用道具 举报

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

Archiver|手机版|圣龙扬特-AVR电子 ( 鲁ICP备05022832号 )

GMT+8, 2024-12-22 01:09 , Processed in 0.189415 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部