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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

學(xué)習(xí)很久的單片機(jī)匯編,遇到蜂鳴器驅(qū)動(dòng)不了,今天終于驅(qū)動(dòng)蜂鳴器響了!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:218360 發(fā)表于 2018-10-25 22:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
    一直下學(xué)習(xí)單片機(jī)A51匯編語(yǔ)音,流水燈,數(shù)碼管,獨(dú)立按鍵基本上都可以寫出來(lái),而學(xué)習(xí)蜂鳴器,死活驅(qū)動(dòng)不了無(wú)源蜂鳴器,今天在論壇看了admin的C語(yǔ)音,用他的C語(yǔ)言下載進(jìn)去蜂鳴器響了,自己照他的程序?qū)憛R編,很多方式不太會(huì)用,匯編與C應(yīng)用不是很懂(開(kāi)始學(xué)習(xí)過(guò)一點(diǎn)C),不會(huì)寫的去掉了,只留下自己會(huì)寫的,下載程序,有點(diǎn)響了,改變定時(shí)器的時(shí)間,蜂鳴器響了,感覺(jué)很高興,附上版主的程序和我的匯編程序,請(qǐng)各位指點(diǎn)一二

單片機(jī)源碼:
  1. #include<reg52.h>

  2. sbit BUZZ = P1^0;  //蜂鳴器控制引腳
  3. unsigned char T0LoadH = 0;  //T0重載值的高字節(jié)
  4. unsigned char T0LoadL = 0;  //T0重載值的低字節(jié)



  5. void OpenBuzz(unsigned int frequ);

  6. void StopBuzz();



  7. void main()

  8. {

  9.     unsigned int i=0;



  10.     TMOD = 0x01; //配置T0工作在模式1,暫不啟動(dòng)

  11.     EA = 1;       //使能全局中斷



  12.     while (1)

  13.     {

  14.         OpenBuzz(2000); //以4KHz的頻率啟動(dòng)蜂鳴器

  15.         for (i=0; i<30000; i++);

  16.         StopBuzz();

  17.         for (i=0; i<30000; i++);

  18.         OpenBuzz(2000); //以1KHz的頻率啟動(dòng)蜂鳴器

  19.         for (i=0; i<30000; i++);

  20.         StopBuzz();

  21.         for (i=0; i<30000; i++);

  22.     }

  23. }



  24. void OpenBuzz(unsigned int frequ)

  25. {

  26.     unsigned int reload;



  27.     reload = 65536 - (11059200/12) / (frequ*2);  //由給定頻率值計(jì)算定時(shí)器重載值

  28.     T0LoadH = reload >> 8;  //16位重載值分解為高低兩個(gè)字節(jié)

  29.     T0LoadL = reload;

  30.     TH0 = 0xFF;   //設(shè)定一個(gè)接近溢出的初值,以使定時(shí)器馬上投入工作

  31.     TL0 = 0xFE;

  32.     ET0 = 1;   //使能T0中斷

  33.     TR0 = 1;   //啟動(dòng)T0

  34. }

  35. void StopBuzz()

  36. {

  37.     ET0 = 0;   //禁用T0中斷

  38.     TR0 = 0;   //停止T0

  39. }



  40. void InterruptTimer0() interrupt 1

  41. {

  42.     TH0 = T0LoadH;  //溢出后進(jìn)入中斷重新賦值

  43.     TL0 = T0LoadL;

  44.     BUZZ = ~BUZZ; //反轉(zhuǎn)蜂鳴器控制電平

  45. }
復(fù)制代碼

這個(gè)為版主的C,下面為我寫的匯編,已下載HEX文件到開(kāi)發(fā)板可以正常發(fā)聲了(驅(qū)動(dòng)無(wú)源蜂鳴器,蜂鳴器為P1.0)
  1. BUZZ           BIT   P1.0
  2. ORG   0000H
  3. LJMP  START
  4. ORG   000BH  ;定時(shí)器0入口
  5. LJMP  ZHONGDUAN;跳轉(zhuǎn)到定時(shí)中斷

  6. START:
  7.         MOV  TMOD ,#01H ; 使用定時(shí)器T0
  8.         SETB  EA        ;開(kāi)啟總中斷

  9.                
  10. MAIN:      
  11.         LCALL OPENBUZZ   ;調(diào)用開(kāi)啟無(wú)源蜂鳴器
  12.         LCALL YS1         ;延時(shí)下
  13.         LCALL STOPBUZZ  ;關(guān)閉蜂鳴器
  14.         LCALL YS1   ;延時(shí)下
  15.         LCALL OPENBUZZ ;再開(kāi)啟蜂鳴器
  16.         LCALL YS1     ;延時(shí)下
  17.         LCALL STOPBUZZ ;關(guān)閉蜂鳴器
  18.         LCALL YS1            ;再延時(shí)
  19.         LJMP  MAIN   ;如此循環(huán)
  20. OPENBUZZ:
  21.         MOV   TH0,#0FFH        ;定時(shí)時(shí)間在65536-65350=186US
  22.         MOV   TL0,#046H  ;根據(jù)你蜂鳴器的頻率不同,調(diào)節(jié)定時(shí)時(shí)間
  23.         SETB  ET0 ;開(kāi)啟定時(shí)器中斷
  24.         SETB  TR0 ;開(kāi)啟定時(shí)器
  25.         RET
  26. STOPBUZZ:        CLR        ET0  ;關(guān)閉定時(shí)器中斷和關(guān)閉定時(shí)器,蜂鳴器將不會(huì)鳴叫
  27.                 CLR        TR0
  28.                 RET
  29. ZHONGDUAN:        MOV TH0,#0FFH  ;給T0的重現(xiàn)賦初值
  30.                 MOV TL0,#046H
  31.                 CPL  BUZZ        ;對(duì)蜂鳴器進(jìn)行取反
  32.                 RETI   
  33.                
  34. YS1:        MOV  R7,#20                     ;延時(shí)子程序,時(shí)間長(zhǎng)可以更改R6或R5的值。
  35. D1:        MOV  R6,#200
  36. D2:        MOV  R5,#100
  37. D3:        DJNZ R5,D3
  38.         DJNZ R6,D2
  39.         DJNZ R7,D1
  40.         RET
  41.         END
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:101808 發(fā)表于 2018-10-26 10:14 | 只看該作者
佩服現(xiàn)在還用匯編的大仙!了不起啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:276663 發(fā)表于 2018-10-26 12:25 | 只看該作者
首先要恭喜了,看了你之前的帖子,很用心的去學(xué)習(xí)單片機(jī)。

有個(gè)疑問(wèn):
為什么學(xué)習(xí)單片機(jī),你選擇了匯編語(yǔ)言入門?
相對(duì)于匯編,C語(yǔ)言更適合單片機(jī)入門使用。因此,網(wǎng)上入門的各種代碼大部分都是C語(yǔ)言寫的,如果用C,一個(gè)你可以參考的例程更多,一個(gè)易于和其他人交流討論(畢竟別人不能懂你的匯編也沒(méi)法討論)。
回復(fù)

使用道具 舉報(bào)

地板
ID:73182 發(fā)表于 2018-10-26 16:26 | 只看該作者
同意樓上,匯編發(fā)個(gè)聲音確實(shí)都好麻煩,自學(xué)的還是C比較方便,匯編沒(méi)那條件
回復(fù)

使用道具 舉報(bào)

5#
ID:218360 發(fā)表于 2018-10-26 17:49 | 只看該作者
IdeaMing 發(fā)表于 2018-10-26 12:25
首先要恭喜了,看了你之前的帖子,很用心的去學(xué)習(xí)單片機(jī)。

有個(gè)疑問(wèn):

因我們公司的軟件工程師是匯編,想看協(xié)助他,必須看的懂匯編語(yǔ)言,或者理解匯編的使用,原本就是學(xué)C,我們軟件工程師說(shuō),我是寫匯編,你學(xué)匯編,不懂可以問(wèn)我
回復(fù)

使用道具 舉報(bào)

6#
ID:218360 發(fā)表于 2018-10-26 17:50 | 只看該作者
zhaozonghui 發(fā)表于 2018-10-26 10:14
佩服現(xiàn)在還用匯編的大仙!了不起啊

領(lǐng)導(dǎo)用的就是匯編,用C他看不懂,也教不了我,他的軟件我也沒(méi)有辦法協(xié)助他,所以就還是匯編了
回復(fù)

使用道具 舉報(bào)

7#
ID:276663 發(fā)表于 2018-10-29 09:20 | 只看該作者
打雜的 發(fā)表于 2018-10-26 17:49
因我們公司的軟件工程師是匯編,想看協(xié)助他,必須看的懂匯編語(yǔ)言,或者理解匯編的使用,原本就是學(xué)C,我 ...

這么說(shuō),你遇到的這些基本問(wèn)題,問(wèn)他吧,如果他有耐心教教你,學(xué)的也很快,可是看你所有的帖子,從去年7月吧,到現(xiàn)在感覺(jué)還是沒(méi)起步。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 激情毛片| 国产黄色网 | 国产成人福利在线观看 | 在线国产欧美 | 自拍偷拍一区二区三区 | 91电影院| 在线观看免费av片 | 亚洲欧美一区二区三区国产精品 | 精品欧美乱码久久久久久 | 日韩欧美大片在线观看 | 亚洲精品自拍视频 | 特级毛片爽www免费版 | 欧美成人激情视频 | 国产综合在线视频 | 在线观看视频91 | www.日韩| 久草视频在线播放 | 精品国产欧美一区二区 | 69av网 | 午夜av免费 | 日本五月婷婷 | av日韩高清 | 天堂中文av | 欧美日韩综合 | 国产精品成人一区二区 | 四虎影院在线观看av | 日韩精品一区二区三区视频播放 | 国产精品视频97 | 色综合久 | 99国产精品久久久久老师 | 日韩中文在线视频 | 天天操天天干天天曰 | 97久久精品午夜一区二区 | 在线观看视频91 | 日韩av成人在线 | 久久国产精品72免费观看 | 亚洲成av人影片在线观看 | 欧美日韩国产一区二区三区 | 国产精品日产欧美久久久久 | 国产精品一区三区 | 色嗨嗨 |