赵彬 发表于 2019-10-23 21:37:42

bascom avr 接收不定长数据

看到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
''
页: [1]
查看完整版本: bascom avr 接收不定长数据