找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2100|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM8模擬串口接收,通過IO口接收,調(diào)用物理串口發(fā)送調(diào)試程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:588163 發(fā)表于 2021-3-15 15:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. #include"iostm8s103F3.h"


  2. unsigned char rdata;
  3. unsigned char bit=0;
  4. unsigned char flag1=0;
  5. unsigned char flag2=0;
  6. unsigned char number=0;
  7. unsigned char bit_begin=0;


  8. void RXD_data(void)
  9. {


  10. }

  11. void GPIO_Init(void)
  12. {
  13.      
  14.       PD_DDR &=~(1<<3);
  15.       PD_CR1 |= (1<<3);
  16.       PD_CR2 |= (1<<3);
  17.       
  18.       EXTI_CR1 |=0x00;     
  19. }
  20.      
  21. void CLK_Init(void)
  22. {     
  23.    
  24.       CLK_SWR =0xE1;               
  25.       CLK_CKDIVR=0X00;
  26. }

  27. void Init_UART1(void)
  28. {
  29.       UART1_CR1=0x00;
  30.       UART1_CR2=0x00;
  31.       UART1_CR3=0x00;
  32.       UART1_BRR2=0x0b;
  33.       UART1_BRR1=0x08;
  34.       UART1_CR2 =0x2c;//允許接收,發(fā)送,開接收中斷
  35.      
  36. }


  37. void TMI2_Init(void)          //定時器2初始化
  38. {
  39.       TIM2_PSCR    = 0x00;               //16分頻 1MHZ 1us  
  40.       TIM2_ARRH    = 417 >> 8;           //自動裝
  41.       TIM2_ARRL    = 417;      

  42.       TIM2_CNTRH=0x00; //初值
  43.       TIM2_CNTRL=0x00;
  44.       TIM2_EGR=0X01; //允許產(chǎn)生更新標志
  45.       TIM2_CR1 |= 0x80; //開啟定時器
  46.       TIM2_IER |= 0x01; //允許中斷
  47. }
  48.               
  49.                   
  50. #pragma vector = 8                  // IAR中的中斷號,要在STVD中的中斷號上加2
  51. __interrupt void RXDInterrupt( void )
  52. {
  53.          
  54.       
  55.          PD_CR2 &= ~( 1 << 3 );      //禁止外部中斷
  56.          
  57.          TIM2_CR1 = 0x81;
  58.          flag2=1;              
  59.          
  60. }
  61.                
  62. #pragma vector  = 0x0f
  63. __interrupt void TIM2_UPD_OVF_TRG_BRK_IRQHandler(void)
  64. {
  65.   
  66.        TIM2_SR1&=~(1<<0);//清空標志位
  67.           bit_begin++;
  68.        if(bit_begin>=5)
  69.        {
  70.             number++;
  71.              if(number==2 &&  flag2==1)
  72.              {
  73.                   if( (( PD_IDR & 0x08) == 0x08 )  && (bit<8) )
  74.                   {
  75.                         rdata>>=1;
  76.                         rdata |= 0x80;
  77.                    }
  78.                    else if( (( PD_IDR & 0x08) == 0x00 )  && (bit<8) )
  79.                   {
  80.                         rdata>>=1;
  81.                    }
  82.                    bit++;
  83.                    if( ((PC_IDR & 0x08) == 0x08 ) && (bit==9)  )
  84.                    {
  85.                      
  86.                         bit=0;
  87.                         flag2=0;
  88.                         UART1_DR=rdata;
  89.                        
  90.                         
  91.                     }
  92.              }
  93.             
  94.             if(number==4)
  95.             {
  96.             number=0;
  97.              }
  98.             
  99.             
  100.        }
  101.    
  102.        if(bit_begin==40)
  103.        {   
  104.             bit_begin=0;
  105.             TIM2_CR1 = 0x80;
  106.             PD_CR2 |= ( 1 << 3 );  
  107.             
  108.             
  109.        }
  110.      
  111. }
  112.                   



  113. main()
  114. {
  115.       
  116.         CLK_Init();
  117.         
  118.         TMI2_Init();
  119.         Init_UART1();
  120.         GPIO_Init();
  121.         asm("rim");//開中斷,sim為關(guān)中斷
  122.         while (1);
  123.         
  124. }
復(fù)制代碼

所有資料51hei提供下載:
STM8模擬串口接收.zip (239.5 KB, 下載次數(shù): 21)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表