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

標(biāo)題: 學(xué)習(xí)很久的單片機(jī)匯編,遇到蜂鳴器驅(qū)動(dòng)不了,今天終于驅(qū)動(dòng)蜂鳴器響了! [打印本頁(yè)]

作者: 打雜的    時(shí)間: 2018-10-25 22:47
標(biāo)題: 學(xué)習(xí)很久的單片機(jī)匯編,遇到蜂鳴器驅(qū)動(dòng)不了,今天終于驅(qū)動(dòng)蜂鳴器響了!
    一直下學(xué)習(xí)單片機(jī)A51匯編語(yǔ)音,流水燈,數(shù)碼管,獨(dú)立按鍵基本上都可以寫出來,而學(xué)習(xí)蜂鳴器,死活驅(qū)動(dòng)不了無源蜂鳴器,今天在論壇看了admin的C語(yǔ)音,用他的C語(yǔ)言下載進(jìn)去蜂鳴器響了,自己照他的程序?qū)憛R編,很多方式不太會(huì)用,匯編與C應(yīng)用不是很懂(開始學(xué)習(xí)過一點(diǎn)C),不會(huì)寫的去掉了,只留下自己會(huì)寫的,下載程序,有點(diǎn)響了,改變定時(shí)器的時(shí)間,蜂鳴器響了,感覺很高興,附上版主的程序和我的匯編程序,請(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文件到開發(fā)板可以正常發(fā)聲了(驅(qū)動(dòng)無源蜂鳴器,蜂鳴器為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        ;開啟總中斷

  9.                
  10. MAIN:      
  11.         LCALL OPENBUZZ   ;調(diào)用開啟無源蜂鳴器
  12.         LCALL YS1         ;延時(shí)下
  13.         LCALL STOPBUZZ  ;關(guān)閉蜂鳴器
  14.         LCALL YS1   ;延時(shí)下
  15.         LCALL OPENBUZZ ;再開啟蜂鳴器
  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 ;開啟定時(shí)器中斷
  24.         SETB  TR0 ;開啟定時(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ù)制代碼


作者: zhaozonghui    時(shí)間: 2018-10-26 10:14
佩服現(xiàn)在還用匯編的大仙!了不起啊
作者: IdeaMing    時(shí)間: 2018-10-26 12:25
首先要恭喜了,看了你之前的帖子,很用心的去學(xué)習(xí)單片機(jī)。

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

作者: ptlantu    時(shí)間: 2018-10-26 16:26
同意樓上,匯編發(fā)個(gè)聲音確實(shí)都好麻煩,自學(xué)的還是C比較方便,匯編沒那條件
作者: 打雜的    時(shí)間: 2018-10-26 17:49
IdeaMing 發(fā)表于 2018-10-26 12:25
首先要恭喜了,看了你之前的帖子,很用心的去學(xué)習(xí)單片機(jī)。

有個(gè)疑問:

因我們公司的軟件工程師是匯編,想看協(xié)助他,必須看的懂匯編語(yǔ)言,或者理解匯編的使用,原本就是學(xué)C,我們軟件工程師說,我是寫匯編,你學(xué)匯編,不懂可以問我
作者: 打雜的    時(shí)間: 2018-10-26 17:50
zhaozonghui 發(fā)表于 2018-10-26 10:14
佩服現(xiàn)在還用匯編的大仙!了不起啊

領(lǐng)導(dǎo)用的就是匯編,用C他看不懂,也教不了我,他的軟件我也沒有辦法協(xié)助他,所以就還是匯編了
作者: IdeaMing    時(shí)間: 2018-10-29 09:20
打雜的 發(fā)表于 2018-10-26 17:49
因我們公司的軟件工程師是匯編,想看協(xié)助他,必須看的懂匯編語(yǔ)言,或者理解匯編的使用,原本就是學(xué)C,我 ...

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




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美无乱码久久久免费午夜一区 | 成人欧美一区二区三区视频xxx | 久久久久综合 | 精品成人佐山爱一区二区 | 亚洲精品第一国产综合野 | 99热精品在线 | 午夜影院在线观看视频 | 久久精品一区二区 | 精品久久久久久久 | 日日夜夜天天久久 | 国产精品精品 | 天天综合久久 | 正在播放国产精品 | 午夜播放器在线观看 | 免费一看一级毛片 | 国产玖玖 | 欧美日韩综合一区 | 精品国产一区二区三区av片 | 国产精品久久av | 久久久久一区二区三区四区 | 欧美激情一区二区三区 | 国产日韩欧美一区二区 | 久久国产免费 | 国产精品久久av | 久久久久久国产精品 | 久久精品亚洲一区二区三区浴池 | 在线观看中文字幕av | 暖暖成人免费视频 | 国产午夜精品一区二区 | 免费同性女女aaa免费网站 | 日韩精品一区二区在线观看 | 亚洲欧美日韩一区二区 | 精品久久香蕉国产线看观看亚洲 | 中文字幕视频在线看 | 久久av资源网 | 欧美一区免费 | 一区二区三区四区不卡视频 | 国产精品毛片 | 毛片1 | 91黄色片免费看 | 一区二区三区中文字幕 |