<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 8951串口中斷

          8951串口中斷

          作者: 時間:2016-11-11 來源:網絡 收藏
          初始化串口中斷
          void InitCOM_Interrupt(void)
          {
          #if 1
          SCON = 0x50; //8bit
          TMOD = 0x20; //timer1 mode 2
          PCON = 0x00; //SMOD=1, double baud
          TL1 = 0xFD;
          TH1 = 0xFD; //Baud = 9600, 11.0592MHz
          //IE |= 0x90; //Serail break enable
          TR1 = 1; //timer1 start
          ES = 1;
          EA = 1; //disable interrupt
          #else
          SCON = = 0x50;
          TH2 = 0XFF;
          TL2 = 0xFD //baud = 115200, 11.0592MHz
          RCAP2H = 0xFF;
          RCAP2L = 0xFD; //
          TCLK = 1;
          RCLK = 1;
          C-T2 = 0;
          TR2 = 1;
          #endif
          }
          中斷函數
          void UART_Interrupt(void) interrupt 4
          {
          char temp;
          COMWrite("Interruptn");
          if(RI)
          {
          RI=0;
          temp=SBUF;
          COMPutc(temp);
          }
          }
          全部貼上
          /******************************************
          FCT applicaiton
          Flex-B15-TSD
          First:20110916
          Modify: 20111217
          Remark: modify the COM data format. Get the data with n.
          ******************************************/
          #include
          #include
          #include
          #include
          #include
          #define LOW 0
          #define HIGH 1
          #define ACTIVE 0x00
          #define IDLE 0x01
          sfr P1_ADC_EN = 0x97;
          sfr ADC_CONTR = 0xC5;
          sfr ADC_DATA = 0xC6;
          void InitPort()
          {
          //P0 = 0x00;
          //P3 = 0X00;
          P2 = 0xFF;//Out controller P2=0x00
          P1 = 0XFF;//input
          }
          void Delay(unsigned char cnt)
          {
          while(cnt > 0)
          {
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          cnt--;
          }
          }
          void Delay_Loop(unsigned int loop)
          {
          unsigned int i = 0;
          for(i=0; i
          Delay(0xA0);
          }
          /****************************
          ADC function: voltage = 256*Vin/Vcc
          ****************************/
          unsigned char ADConvert(unsigned char channel)
          {
          ADC_DATA = 0;
          P1_ADC_EN = (0x01 << channel);
          ADC_CONTR = channel;
          Delay(1);
          ADC_CONTR |= 0x08; //set ADC_START =1,
          while(!(ADC_CONTR &0x10)); //wait until ADC_FLAG =1
          ADC_CONTR &= 0xF7;
          return ADC_DATA; //data = 256*Vin/Vcc (Vcc is the vlitage of MCU)
          }
          void InitCOM(void)
          {
          #if 1
          SCON = 0x50; //8bit
          TMOD = 0x20; //timer1 mode 2
          PCON = 0x00; //SMOD=1, double baud
          TL1 = 0xFD;
          TH1 = 0xFD; //Baud = 9600, 11.0592MHz
          //IE |= 0x90; //Serail break enable
          TR1 = 1; //timer1 start
          ES = 0;
          EA = 0; //disable interrupt
          #else
          SCON = = 0x50;
          TH2 = 0XFF;
          TL2 = 0xFD //baud = 115200, 11.0592MHz
          RCAP2H = 0xFF;
          RCAP2L = 0xFD; //
          TCLK = 1;
          RCLK = 1;
          C-T2 = 0;
          TR2 = 1;
          #endif
          }
          void InitCOM_Interrupt(void)
          {
          #if 1
          SCON = 0x50; //8bit
          TMOD = 0x20; //timer1 mode 2
          PCON = 0x00; //SMOD=1, double baud
          TL1 = 0xFD;
          TH1 = 0xFD; //Baud = 9600, 11.0592MHz
          //IE |= 0x90; //Serail break enable
          TR1 = 1; //timer1 start
          ES = 1;
          EA = 1; //disable interrupt
          #else
          SCON = = 0x50;
          TH2 = 0XFF;
          TL2 = 0xFD //baud = 115200, 11.0592MHz
          RCAP2H = 0xFF;
          RCAP2L = 0xFD; //
          TCLK = 1;
          RCLK = 1;
          C-T2 = 0;
          TR2 = 1;
          #endif
          }
          /*****************************
          Send data
          *****************************/
          void COMPutc(char cdata)
          {
          SBUF = cdata;
          while(!TI);
          TI = 0;
          }
          void COMWrite(char* str)
          {
          while(*str)
          COMPutc(*str++);
          }
          void COMWriteNum(int num, char* str)
          {
          char d[32];
          sprintf(d, "%s:%dn", str, num);
          COMWrite(d);
          }
          /********************************
          Read Data
          ********************************/
          char COMGetc(void)
          {
          char temp;
          while(!RI);
          temp = SBUF;
          RI = 0;
          return temp;
          }
          void COMRead(char* str, unsigned char length)
          {
          unsigned char i = 0;
          for(i = 0; i < length; i++)
          {
          str[i] = COMGetc();
          }
          }
          void COMReadEnter(char* str)
          {
          char temp;
          do
          {
          //Delay(1);
          //COMWrite("ndatan");
          temp = COMGetc();
          *str=temp;
          //COMPutc(temp);
          str++;
          }while(temp!=n && temp!=r);
          *str = 看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();