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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3098|回復: 7
打印 上一主題 下一主題
收起左側

AT89C52單核A2單片機按下獨立按鍵蜂鳴器響流水燈左移松開按鍵蜂鳴器不響流水燈右移

[復制鏈接]
跳轉到指定樓層
樓主
ID:863668 發表于 2020-12-19 21:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
初學單片機,很多地方不懂,看了視頻,之前嘗試的是CPU控制流水燈和蜂鳴器同時運行,但是用delay函數延時兩個程序相沖突。然后用定時器控制蜂鳴器50us中斷,還是不行,求大神指點

#include<reg52.h>
#include<intrins.h>

typedef unsigned int u16;
typedef unsigned char u8;

sbit k1 = P3^0;
sbit beep = P1^5;

void delay(u16 i)
{
        while(i--);
}

void Timer0Init()
{
        TMOD |= 0x01;
        TH0 = 0xff;
        TL0 = 0xf6;
        ET0 = 1;
        EA = 1;
        TR0 = 1;
}

void main()
{               
        beep = 1;
        Timer0Init();
        if(k1==0)
        {               
                while(k1==0)
                {
                        P2 = 0xfe;
                        delay(30000);
                        while(1)
                        {
                                P2 = _cror_(P2,1);
                                delay(30000);
                        }
                        while(k1!=0)
                        {
                                P2 = 0xff;
                        }
                }
        }
}

void Timer0()  interrupt 1
{
        static u16 j;
        TH0 = 0xff;
        TL0 = 0xf6;
        j++;
        if(j==5 & k1==0)
        {
                j = 0;
                beep = ~beep;
                if(k1==1)
                {
                        beep = 1;
                }
        }
}

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

使用道具 舉報

沙發
ID:213173 發表于 2020-12-19 22:10 | 只看該作者
按鍵控制流水燈,無源蜂鳴器提示音。
#include<reg52.h>
#include<intrins.h>

typedef unsigned int u16;
typedef unsigned char u8;

sbit k1 = P3^0;
sbit beep = P1^5;

u16 num;

void delay(u16 i)
{
        while(i--);
}
void Timer0Init()        //200微秒@12.000MHz
{
        TMOD |= 0x02;        //設置自動重裝模式
        TH0 = 0x38;                //設置定時重載值
        TL0 = 0x38;                //設置定時初值
        TR0 = 1;                        //定時器0開始計時
        ET0 = 1;
        EA = 1;
}

void main()
{               
        beep = 1;
        Timer0Init();
        P2=0xfe;
        while(1)
        {
                if(!k1)
                {
                        delay(100);
                        if(!k1)
                        {
                                P2=_cror_(P2,1);
                                num=500;//響0.1s
                                while(!k1);
                        }
                }
        }
}

void Timer0()  interrupt 1
{
        if(num>0)
        {
                num--;
                beep=~beep;//2.5KHz
        }
        else beep = 1;
}
回復

使用道具 舉報

板凳
ID:863668 發表于 2020-12-20 16:48 | 只看該作者
wulin 發表于 2020-12-19 22:10
按鍵控制流水燈,無源蜂鳴器提示音。
#include
#include

感謝大佬!!!
整出來了!琢磨好幾天了
我后續加了點東西進去,一直按一直響流水燈左移
看來還有很多東西要學
最后再次感謝大佬!
回復

使用道具 舉報

地板
ID:864035 發表于 2020-12-20 16:56 | 只看該作者
ADRLED        EQU        8700H                ;LED工作地址

        ORG         0000H
        LJMP         MAIN

        ORG        1BH
        JMP        T1INT                ;定時器1中斷入口地址

        ORG         0100H
MAIN:        MOV         SP,#60H
        MOV        R0,#0AH                ;R0為0.1秒的次數
        ANL        TMOD,#0FH        ;定時器1置為方式1
        ORL        TMOD,#10H
        MOV        TL1,#0B0H        ;置定時器1的中斷時間為0.1S
        MOV        TH1,#3CH
        ORL        IE,#88H                ;允許定時器1中斷
        MOV        R2,#0                ;置R2初值,R2對應顯示字符的字形碼相對地址
        MOV        R5,#16                ;置顯示的字符數初值
        SETB        P3.4                ;使蜂鳴器的負端為高不鳴叫
        CLR        P3.5                ;使數碼管的共陰極為低電平
NEXT:        MOV        DPTR,#TAB        ;置字形碼表首地址
        MOV        A,R2
        MOVC        A,@A+DPTR        ;取出相應的字形碼
        MOV         DPTR,#ADRLED        ;數碼管段碼地址
        MOVX         @DPTR,A                ;送數碼管段碼(字形碼)
        SETB        TR1                ;啟動定時器1
LOOP:        CJNE        R0,#00H,LOOP        ;不夠1秒,轉LOOP
        INC        R2
        MOV        R0,#0AH                ;重置R0為10
        DJNZ        R5,NEXT                ;16個字符沒有顯示1遍,轉NEXT顯示下一字符
        CLR        P3.4                ;使蜂鳴器的負端為低其鳴叫
        MOV        A,#0FFH                ;報警之后數碼管顯示全亮
        MOV         DPTR,#ADRLED        ;數碼管段碼地址
        MOVX         @DPTR,A                ;送數碼管段碼(字形碼)
        CLR        TR1                ;定時器停止計數
        SJMP        $                ;死循環

T1INT:        CLR        TR1                ;定時器1中斷,首先停止計數
        DEC        R0                ;次數減1
        MOV        TL1,#0B0H        ;重置定時器1時間常數
        MOV        TH1,#3CH
        SETB        TR1                ;恢復定時器1計數
        RETI

TAB:        DB        3FH,06H,5BH,4FH,66H,6DH,7DH,07H                ;字形碼表
        DB        7FH,6FH,77H,7CH,58H,5EH,79H,71H

        END                       
回復

使用道具 舉報

5#
ID:863668 發表于 2020-12-20 19:41 | 只看該作者
787878979867468 發表于 2020-12-20 16:56
ADRLED        EQU        8700H                ;LED工作地址

        ORG         0000H

這....看的我一臉懵啊
這種寫代碼的格式我好像沒有學過
只學過最基本的C語言
回復

使用道具 舉報

6#
ID:420836 發表于 2020-12-20 23:51 | 只看該作者
作為初學者,請從簡單到復雜進行嘗試,首先可以使蜂鳴器工作,然后使LED燈工作,最后將兩者結合使用。
回復

使用道具 舉報

7#
ID:863668 發表于 2020-12-21 11:16 | 只看該作者
TTQ001 發表于 2020-12-20 23:51
作為初學者,請從簡單到復雜進行嘗試,首先可以使蜂鳴器工作,然后使LED燈工作,最后將兩者結合使用。

嗯嗯,是一步一步嘗試的
蜂鳴器和流水燈單獨使用無論是用延時函數還是外部中斷都可以實現
可一把他倆放到一起就不知道咋回事了
回復

使用道具 舉報

8#
ID:824490 發表于 2020-12-21 16:49 | 只看該作者
黑羊羔子 發表于 2020-12-21 11:16
嗯嗯,是一步一步嘗試的
蜂鳴器和流水燈單獨使用無論是用延時函數還是外部中斷都可以實現
可一把他倆放 ...

看你是把哪個任務做為主循環。
如果以流水燈為主,那么:
流水燈
{
//檢測按鍵有效則
while(按鍵沒松開)
  BEEP();
}
如果是BEEP為主,則:
beep
{
//檢測按鍵有效則
while(按鍵沒松開)
  流水燈();


}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久伊人国产 | a级片在线观看 | 天天干夜夜撸 | 日韩色av| 国产又黄又猛 | 在线中文字幕av | 欧美在线观看一区 | 免费a在线观看 | 日韩精品在线视频 | 亚欧在线观看 | 深夜视频在线观看 | 黄色av免费在线观看 | 国内精品一区二区 | 国产视频一区二区在线 | 日本理论片午伦夜理片在线观看 | 亚洲第一色 | 日韩精品久久久久久 | 午夜性福利| 国产欧美在线观看 | av入口| 国产综合亚洲精品一区二 | 免费黄色小网站 | 毛片网站大全 | 午夜aaa | 成人福利在线观看 | 日本免费一级片 | www在线播放 | 国内福利视频 | 成人黄色一级片 | 久久亚洲成人 | 91久久 | 可以在线观看的av | 欧美在线视频播放 | 四虎永久在线 | 91欧美大片 | 欧美韩日 | 免费久久久 | 手机av在线 | 在线观看国产免费视频 | 久久久久女教师免费一区 | 黄色aaa|