音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

貼一段小程序,是蜂鳴器的,但有問題,一直找不出來,請指教

作者:yywxwen 欄目:單片機(jī)
貼一段小程序,是蜂鳴器的,但有問題,一直找不出來,請指教
這個程序中,我但步執(zhí)行都可以
但一點運行,蜂鳴器就連續(xù)不斷的叫,
我檢查了延遲時間,沒有錯,請指教(前面有些定義的變量在這里不起做用)

    list p=16F877

    ; Include file, change directory if needed
    include "p16F877.inc"
;-----------------------------------
        ; difine register
ADF1    EQU     0x20          ;
ADF2    EQU     0x21          ;
ADF3    EQU     0x22          ;
ADF4    EQU     0x23          ;
delay_1 EQU     0x24          ;
delay_2 EQU     0x25          ;
delay_3 EQU     0x26          ;
delay_4 EQU     0x27          ;
beepL    EQU    0x28
AA0     EQU     0x30
AA1     EQU     0x31
AA2     EQU     0x32
T1      EQU     0x33
T2      EQU     0x34
NUM     EQU     0x35
CONT    EQU     0x36

;-------Start at the reset vector----
    org    0x00
    goto    Start

    org    0x04
    nop

    org    0x10

Start
    nop
    banksel TRISA
        movlw   0XFF
    movwf   TRISA       ;PORTA all inputs
    clrf    TRISB        ;PORTB all outputs
    clrf    TRISC        ;PORTB all outputs
        bsf     TRISC,3

    banksel PORTA
        clrf    PORTA        ;Clear PORTA
     clrf    PORTB        ;Clear PORTB
    clrf    PORTC       ;;;

    banksel    OPTION_REG
    BCF    OPTION_REG,T0CS ;TMR0工作于定時器方式
    BSF    OPTION_REG,PSA    ;TMR0不用分頻

        clrf    INTCON
    

     GOTO A1

delay    movwf    delay_1
delayad    decfsz    delay_1,1
    goto    delayad
    return


beepsel
    banksel    PORTA
        movlw    D'10'
    movwf    beepL
beepm
    bsf     PORTB,1         ;beep  on
    movlw    D'100'
    call    delay
        bcf     PORTB,1         ;beep  off
    movlw    D'255'
    call    delay
        decfsz    beepL,1
    goto    beepm
        bcf     PORTB,1         ;beep  off
    return

A1
       call    beepsel        ;beep    
       
       GOTO A1
end



2樓: >>參與討論
yywxwen
找到了,謝謝,是延遲時間不夠,但又出現(xiàn)了新問題
這個問題是:假如我把倒數(shù)第2行的GOTO A1去掉
           那么我用MPLAB仿真時,最后程序就飛了
           我用單步執(zhí)行也是這樣
           我想是不是由于END是偽指令?不能直接結(jié)束?
           還是語法有問題?我查了有關(guān)資料,但手頭的書籍上都沒說這些
           請指教,謝謝!

3樓: >>參與討論
HotPower
“零耗時”蜂鳴器“軟件控制器”
可在侃單片機(jī)搜索主題——經(jīng)典4*4鍵盤掃描討論 - dcp 2004-1-27 19:46:44



繼續(xù)瞎吹——“零耗時”蜂鳴器“軟件控制器”
HotPower 發(fā)表于 2004-1-29 23:44 侃單片機(jī) ←返回版面    

程序在后面,已在幾種MCU中運行,非常好(自吹一次吧)
它可嵌入在“零耗時”鍵盤或動態(tài)顯示的1.25mS中斷內(nèi),T2中斷80或100次后將調(diào)用一次BEEPSOUND通用蜂鳴器發(fā)聲子程序。
這樣就不需每次再編寫蜂鳴器發(fā)聲程序了。

;--------鈴聲定義--------------------
;D7=0循環(huán)  D7=1 單次
;D7~D0=1發(fā)聲  D7~D0=0無聲
DEFBEEPNULL          EQU 00000000B;無鈴聲
DEFBEEP01            EQU 01010101B;(循環(huán)1短聲)
DEFBEEP02            EQU 01100110B;(循環(huán)2長聲)
DEFBEEP03            EQU 01110111B;(循環(huán)2長長聲)
DEFBEEP04            EQU 01110101B;(循環(huán)1長2短聲)
DEFBEEP05            EQU 01110010B;(循環(huán)1長1短聲)

DEFBEEP11            EQU 10000000B;(單次1短聲)
DEFBEEP12            EQU 10100000B;(單次2短聲)
DEFBEEP13            EQU 10101000B;(單次3短聲)
DEFBEEP14            EQU 10101010B;(單次4短聲)

;-------運行期設(shè)置響鈴方式-----------------------------
    MOV   A,#DEFBEEP11;壓鍵鈴聲
    LCALL SETBEEPMODE;設(shè)置響鈴方式
         。。。。。
;-------運行期設(shè)置響鈴方式-----------------------------
    MOV   A,#DEFBEEPPUSHKEY;壓鍵鈴聲
    LCALL SETBEEPMODE;設(shè)置響鈴方式
         。。。。。

;-------設(shè)置響鈴方式子程序-----------------------------
SETBEEPMODE:
    MOV   BEEPRLCOUNT,#1;立即取鈴聲
        MOV   BEEPMODE,A;設(shè)置響鈴
        MOV   BEEPBUFF,A;改寫緩存
SETBEEPMODE_EXIT:
    RET



;-------蜂鳴器100MS發(fā)聲中斷程序-----------------------
;本程序在T2中斷中每100MS運行一次(也可125mS)
BEEPSOUND:
        DJNZ  BEEPRLCOUNT,BEEPSOUND_NEXT;繼續(xù)發(fā)聲
    MOV   BEEPRLCOUNT,#8;重新開始
        MOV   BEEPBUFF,BEEPMODE;取發(fā)聲模式
    JNB   BEEPMODE.7,BEEPSOUND_NEXT;循環(huán)發(fā)聲
    MOV   BEEPMODE,#00H
BEEPSOUND_NEXT:
    CLR   C
    MOV   A,BEEPBUFF;取發(fā)聲緩存
        RLC   A;左移1位
    MOV   BEEPBUFF,A;存發(fā)聲緩存
    MOV   BEEPOUT,C;發(fā)聲
        RET





4樓: >>參與討論
HotPower
我寫的PIC程序可能更難看——四不象
;-------蜂鳴器125mS發(fā)聲子程序----------------------------
  PROC  BEEPSOUND:        
        IFEZ_DecByte(BEEPRLCOUNT);
      ByteVal(BEEPRLCOUNT,8);重新開始
          ByteVar(BEEPBUFF,BEEPMODE);取發(fā)聲模式
      IFET_Bit(BEEPMODE,BIT7);循環(huán)發(fā)聲
        ClrByte(BEEPMODE);
          ENDIFET_Bit;
        ENDIFEZ_DecByte;
        CopyBit(PORTC,BEEP,BEEPBUFF,BIT7);控制蜂鳴器
        ShlByteVal(BEEPBUFF,1);取發(fā)聲緩存
  ENDPROC;

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
史上最菜的問題。呵呵
怎么提高PIC測脈沖的精度??大俠們幫幫忙!!
那有MCP2510的例子啊,高手們指點一下
PIC16F648A
如何重新編譯C18庫文件?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號