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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

這個程序到底哪里出錯了QAQ

查看數: 3168 | 評論數: 7 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2017-4-22 00:42

正文摘要:

目的是按左邊單片機上的按鈕來控制右邊的燈泡亮,左邊的單片機的程序是這樣的: #include<reg51.h> #include<intrins.h> unsigned char a; void main() { a=0xfe; EA=1; ES=1; EX0=1; IT0=1; TMO ...

回復

ID:192443 發表于 2017-4-22 19:14
同求幫助
ID:122949 發表于 2017-4-22 18:04
內部定時器的設置問題
ID:191466 發表于 2017-4-22 16:46
bayga456 發表于 2017-4-22 09:43
TR0=1;改為TR1=1;試試,c51用TR1的溢出率,不是TR0

謝謝,就是TR0的問題!
ID:47286 發表于 2017-4-22 13:44
左邊的單片機的程序是這樣的:

#include<reg51.h>

#define uchar unsigned char

sbit key=P1^0;                //定義按鍵所在端口

uchar a;                        //定義變量a 存放要發送的數據

void Init_UART()        //串口初始化 12T/定時器1作波特率發生器
{
        PCON |= 0x80;                        //使能波特率倍速位SMOD
        SCON = 0x50;                        //8位數據,可變波特率
        AUXR &= 0xBF;                        //定時器1時鐘為Fosc/12,即12T
        AUXR &= 0xFE;                        //串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                        //清除定時器1模式位
        TMOD |= 0x20;                        //設定定時器1為8位自動重裝方式
        TL1=TH1=xxxx;                        //設定定時初值 (你自己定義波特率)
        ET1 = 0;                                //禁止定時器1中斷
        TR1 = 1;                                //啟動定時器1
        ES=1;                                        //開串口中斷
}

void delay()                                        //延時程序 自己寫 20ms夠了
{
        //...............
}

void main()
{
        Init_UART();        //初始化UART

        a=0xfe;                        //賦值 要發送的數據
       
        while(1)                        //主循環
        {
                if(key==0)                        //如果 按鍵按下
                {
                        delay();                        //防抖
                        if(key==0)                        //如果按鍵依舊按下
                        {
                                while(!TI);                        //等到按鍵釋放才動作
                                SBUF=a;                                //給串口緩沖區傳送數據
                                while(!TI);                        //等待發送標記
                        }
                }
        }
}

右邊的單片機的程序是這樣的:

#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char

uchar b=0;                        //定義變量b 存放收到的數據
bit flag_uart=0;        //定義標記 是否接收到數據

void Init_UART()        //串口初始化 12T/定時器1作波特率發生器
{
        PCON |= 0x80;                        //使能波特率倍速位SMOD
        SCON = 0x50;                        //8位數據,可變波特率
        AUXR &= 0xBF;                        //定時器1時鐘為Fosc/12,即12T
        AUXR &= 0xFE;                        //串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                        //清除定時器1模式位
        TMOD |= 0x20;                        //設定定時器1為8位自動重裝方式
        TL1=TH1=xxxx;                        //設定定時初值 (你自己定義波特率 和發送的一樣)
        ET1 = 0;                                //禁止定時器1中斷
        TR1 = 1;                                //啟動定時器1
        ES=1;                                        //開串口中斷
}

void Server_UART() interrupt 4        //中斷4 服務
{
        TI=0;                                                                //發送標志位 TI置0       
       
        if(RI==1)                                                        //如果接收位1 有數據接收
        {
                RI=0;                                                                //清除接收標志 硬件可以接收數據
                b=SBUF;                                                                //從接收緩沖區SBUF讀取數據到數據緩沖區RX
                flag_uart=1;                                                //接收標記置1 收到數據
        }
}

void main()
{
        P1=0x00;                        //顯示端口清零
       
        Init_UART();                //串口初始化
       
        while(1)                        //主循環
        {
                if(flag_uart==1)        //如果 接收標記為1 收到數據
                {
                        flag_uart=0;                //接收標記清零 可以再次接收
                        P1=b;                                //賦值 P1端口值為收到的數據
                }
        }
}
ID:162136 發表于 2017-4-22 09:44
把程序的TR0=1;改為TR1=1;試試
ID:162136 發表于 2017-4-22 09:43
TR0=1;改為TR1=1;試試,c51用TR1的溢出率,不是TR0
ID:151348 發表于 2017-4-22 08:57
昨天看到了類似的問題,你仿真圖里的單片機晶振頻率設置的是多少,12MHz?

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲九九精品 | 欧美精品久久 | 亚洲理论在线观看电影 | 夜夜爽99久久国产综合精品女不卡 | 久久久久久久久一区 | 欧美国产激情二区三区 | 国产一区二区在线免费观看 | 国产精品2区 | 国产亚洲一区二区三区在线观看 | 在线免费看黄 | 亚洲欧美日韩在线 | 精品久草| 免费一级黄色录像 | 美女一区二区在线观看 | 成人精品国产 | 91一区二区三区 | 欧美性video 精品亚洲一区二区 | 国产精品av久久久久久毛片 | 黄色免费三级 | 中文字幕一区二区三区在线乱码 | 99精品在线观看 | 91传媒在线播放 | 欧美一级免费看 | 国内久久 | 草草草久久久 | www.婷婷| 91福利电影在线观看 | 精品视频一区二区三区在线观看 | 伊人久久精品 | 欧美精品第一区 | 亚洲精品一区二区在线观看 | 一区二区三区国产 | 国产美女网站 | 亚洲+变态+欧美+另类+精品 | 久久久五月天 | 久久久精彩视频 | 中文字幕亚洲一区二区va在线 | www.夜夜骑| 在线播放国产一区二区三区 | 中文字幕一区二区三区四区五区 | 国产色视频网站 |