久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 請大神們幫我看看單片機程序我這樣子寫改變脈寬是否正確和兩個定時器使用 [打印本頁]

作者: 小燒友    時間: 2022-12-2 16:52
標題: 請大神們幫我看看單片機程序我這樣子寫改變脈寬是否正確和兩個定時器使用
入門小生求教各位!單片機源程序如下:
#include "STC15W4k.h"
#include <intrins.h>                                        // 加入此頭文件后,可使用_nop_庫函數
#include <string.h>           // 加入此頭文件后,可使用strstr庫函數
#include <stdio.h>

sbit PWM = P3^7;
unsigned char count=0;
unsigned int PWM_width=0;

#define S1_S0 0x00              //P_SW3.0
#define S1_S1 0x00              //P_SW3.1
#define FOSC 11059200L          //系統頻率
#define BAUD 9600             //串口波特率

unsigned char i;
unsigned int rec_data;
float buf;
bit rec_flag;

void delay(unsigned char i)
{
  unsigned char j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
void qie_huan()           //串口引腳選擇函數
{
    ACC = P_SW1;
    ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
    P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
}
void Time0_Init()
{        
        TMOD |= 0x01;         
        //IE   = 0x82;
        TH0  = 0xff; // 100us 中斷
        TL0  = 0xa4;    //寫入預置值
        ET0 =1;  //允許定時器0中斷
        TR0=1;     
}
void UART_init()
{
          SCON = 0x50;                             //8位數據,可變波特率// TMOD &= 0x01;
          AUXR |= 0x14;                            //定時器時鐘1T模式
          T2L = (65536 - (FOSC/4/BAUD));   //設置波特率重裝值
          T2H = (65536 - (FOSC/4/BAUD))>>8;
//              ET1 = 1;
          AUXR |= 0x10;                             //定時器2開始計時
          ES =1;                                        //串口開關
}

void main()
{
        P0M0 = 0x00;
        P0M1 = 0x00;
        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
        P6M0 = 0x00;
        P6M1 = 0x00;
        P7M0 = 0x00;
        P7M1 = 0x00;
        qie_huan();
                                Time0_Init();
                                UART_init();
                                EA =1;                       //中斷總開關        
                                PWM_width = 30;
                                
        while(1)
        {
                                                if(rec_flag == 1)
                                                {               
                                                                if(rec_data=="forward")
                                                                {
                                                                        PWM_width=PWM_width+30;        
                                                                }
                                                                for(i=0;i<sizeof(rec_data);i++)
                                                                {
                                                                        SBUF = rec_data;        
                                                                }                                                               
                                                        rec_flag=0;
                                                }
        }
}
void Time0_Int() interrupt 1  //100us
{
           TH0 = 0xff;  
           TL0 = 0xa4;                                                               //設置定時初值
           count++;
          if(count>=100)
                {
                                count =0;
                }
                if(PWM_width>count)                        
                {
                                PWM=0;
                }else PWM =1;
}
/*----------------------------
UART 中斷服務程序
-----------------------------*/
void Uart() interrupt 4
{
   if(RI)
         {
                        RI=0;          //接收中斷標志位清0
                        rec_data =SBUF;//保存數據
                        rec_flag =1;
         }
         if(TI)
         {
                        TI=0;
         }
}




作者: lkc8210    時間: 2022-12-2 18:13
rec_data每次接收只能存一個字節
字符串不能用==作比較,要用strcmp或memcmp
作者: asd123ASDe    時間: 2022-12-2 18:37
很不錯的內容 接受了 好好學習下
作者: 小燒友    時間: 2022-12-5 09:20
lkc8210 發表于 2022-12-2 18:13
rec_data每次接收只能存一個字節
字符串不能用==作比較,要用strcmp或memcmp

好 受教了,謝謝




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲视频二区 | 日日夜夜精品视频 | 日韩精品av一区二区三区 | 天天视频成人 | 日韩视频在线一区 | 99这里只有精品视频 | 免费在线观看黄视频 | 欧美黄色小视频 | 亚洲精品乱码久久久久久蜜桃91 | 在线欧美视频 | 日韩精彩视频 | 国产wwwcom | 视频一二区 | 免费网站国产 | av高清毛片 | 网页av| 日韩一区中文字幕 | 免费成人高清在线视频 | 狠狠操天天干 | 婷婷精品 | 国产成人精品免高潮在线观看 | 日韩在线一区二区三区 | 亚洲欧美国产一区二区三区 | 久久网一区二区三区 | 美女在线观看av | av中文字幕在线观看 | 欧美大片一区二区 | 日韩有码一区二区三区 | 99视频在线看 | 成人在线不卡 | 天天射色综合 | 国产日韩欧美激情 | 91视频日本| 中文av在线播放 | 精品国产一区二区三区久久久久久 | 国产特黄一级 | 免费国产一区二区 | 国产精品久久久久久吹潮 | 国产婷婷精品 | 欧美日韩专区 | 亚洲永久|