• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (tina)




請問蜂鳴器
#31
中級會員
中級會員


大家好 這是一個2.8KHz蜂鳴器的程式 目前這個程式可以執行 但是我想讓此蜂鳴器執行一秒即停止 請問我要如何改程式 謝謝各位的指點 我使用16F873A ICD2 demoboard為PICDEM 2 PLUS

LIST P=16F873A
#include p16F873a.inc     ;-----------------------------------------------------
  
;-----------------------------------------------------
;
RTCC EQU 01H                ;PC EQU 02H
;STATUS EQU 03H
;C EQU 0
;RP0 EQU 5
;count_1s    equ    0x20
;count_us    equ    0x21
;VAL_500uS    equ    .250
;VAL_1s        equ    .200
;-----------------------
SOUNDDELAY1 EQU 0x20   
;--------------------
    
ORG     0x00
    nop
    
MAIN
    banksel    PORTC            
;定義PORTC,清除PORTC
    CLRF     PORTC        

    BSF     STATUS
,RP0        ;
    
MOVLW     b'00000000'        ;定義TRISC為輸出模式
    MOVWF     TRISC       
    BCF     STATUS
,RP0    
SOUND
    MOVLW     222                
;1/222,450HZ
    BSF     PORTC
,2            ;將蜂鳴器打開
    CALL     SOUNDDELAY0        
;呼叫延遲
    BCF     PORTC
,2            ;關閉延遲
    
;call    delay_1s    
    MOVLW     222                
;反覆鳴叫                
    CALL     SOUNDDELAY0
    
GOTO     SOUND
;------------------------------
SOUNDDELAY0
    MOVWF     SOUNDDELAY1        
;將222放入暫存器
SOUNDDELAYUS_1                
;每一個指令為1us,所以延遲為222*5us+1=1111us,為900Hz
    NOP    
    NOP


    DECFSZ     SOUNDDELAY1
    
GOTO     SOUNDDELAYUS_1
    retfie

發表於: 2005/7/19 16:57
頂部


程式指點...
#32
中級會員
中級會員


大家好 我照著書上範例測試 可以work 但是我不明白
addwf PCL,f 是要幹麻ㄉ 請指點 謝謝

list p=16F873a
#include <p16f873a.inc> ; Include file locate at defult directory

w_temp equ 0x20
STATUS_temp equ 0x21
scaler equ 0x22
blankcnt equ 0x23
maxcount equ 0x32

;********************************************

;*********************************************
org 0x00
nop
goto Main
org 0x04
goto IntServ

IntServ
movwf w_temp
swapf STATUS_temp,w
movwf STATUS_temp
btfsc PIR1,TMR1IF
call Timer1
swapf STATUS_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w
retfie

Timer1
banksel PIR1
bcf PIR1,TMR1IF
decf scaler,f
clrf TMR1L
movlw 0xf8
movwf TMR1H
movlw 0x2f
movwf TMR1L
return
;----------------------main----------------------------------------------------------
Main
call initial
loop
call Blink
call looptime
goto loop

;-------------------------------------------------------------------------------------
initial
banksel maxcount
movlw maxcount
movwf blankcnt
movlw b'11111111'
movwf PORTB
movlw 0x04
movwf scaler
banksel TRISB
clrf TRISB
banksel T1CON
clrf T1CON

clrf TMR1H
clrf TMR1L
clrf INTCON
bsf INTCON,PEIE
banksel PIE1
clrf PIE1
bsf PIE1,TMR1IE
banksel PIR1
clrf PIR1
banksel TMR1L
clrf TMR1L
movlw 0xf8
movwf TMR1H
movlw 0x2f
movwf TMR1L
bsf T1CON,TMR1ON
banksel INTCON
bsf INTCON,GIE
return
;----------------Blink--------------------------------------------------------------------------
Blink
decfsz blankcnt,f
goto blinkend
movlw maxcount
movwf blankcnt
call blinktable
xorwf PORTB,f
blinkend
return
;----------------table--------------------------------------------------------------------------
blinktable
movf PORTB,w
andlw b'00000111'
addwf PCL,f
retlw b'00000001'
retlw b'00000011'
retlw b'00000110'
retlw b'00000010'
retlw b'00000101'
retlw b'00000100'
retlw b'00000111'
retlw b'00000110'
;---------------------looptime-----------------------------------------------------------------
looptime
btfss scaler,7
goto looptime
movlw 5
addwf scaler,f
return
;------------------------
end

發表於: 2005/7/4 22:46
頂部


簡單的閃爍控制
#33
中級會員
中級會員


大家好 我是初學者
我常試寫LED閃爍控制 每格100ms就閃爍一次
但是我的結果出來並不會進行此一動作 一值停留在亮的狀態
我使用的PIC 為 16F873A Demoboard PICDEM 2 PLUS
燒錄器ICD 2 以下是我的程式 請各位幫我看看 謝謝

list p=16F873a
#include <p16f873a.inc> ; Include file locate at defult directory

;
;#define Shift_vaule b'00000001'
VAL_500us equ .5 ; 0.5ms delay value
VAL_10ms equ .3 ; 10mS delay value
VAL_100ms equ .1 ; 100mS delay value

count_us equ 0x20 ; Defined temp reg. for 1ms delay
count_10ms equ 0x21 ; Defined delay reg.
count_100ms equ 0x22
;count_200ms equ 0x22
;count equ 0x23
;shift_value equ 0x20
;********************************************

;*********************************************
org 0x00
nop
initial:
banksel ADCON1 ;定義ADCCON1,將PORTA第四個bit設為數位模式
movlw b'11001110'
movwf ADCON1
banksel CMCON ;定義CMCON將比較器功能關閉
movlw b'00000111'
movwf CMCON

banksel TRISB ;定義TRISB設定PORTB為輸出模式
clrf TRISB

banksel PORTB
clrf PORTB


;***********************************************
Main
;***********************************************
start:
call delay_100ms
movlw b'00000001'
movwf PORTB
call delay_100ms
clrf PORTB
goto start



;-----------------------延遲100ms-------------------------------------------
delay_100ms:
movlw VAL_100ms
movwf count_100ms
loop_100ms: call delay_10ms
decfsz count_100ms,F
goto loop_100ms
return
;-----------------------延遲10ms-------------------------------------------
delay_10ms:
movlw VAL_10ms
movwf count_10ms
loop_10ms: call delay_0.5ms
decfsz count_10ms,F
goto loop_10ms
return
;-----------------------延遲0.5ms----------------------------------------
delay_0.5ms:
movlw VAL_500us
movwf count_us
dec_loop nop
nop
nop
nop
nop
decfsz count_us,F
goto dec_loop
return

end

發表於: 2005/6/28 17:07
頂部


LCD的 bug
#34
中級會員
中級會員


大家好 我使用的PIC為16F873A Demoboard為
PICDEM 2 PLUS 燒錄器為ICD2
對於LCO顯示方面有問題一直解決不了 請問問題出在哪 謝謝
我的error如下:
Error - section 'D_LCD_DATA' can not fit the absolute section. Section 'D_LCD_DATA' start=0x00000020, length=0x00000004
Errors : 1

程式如下:
list         p=16F873A
    
#include    P16F873A.inc


#define    LCD_D4        PORTB, 0    ; LCD data bits
#define    LCD_D5        PORTB, 1
#define    LCD_D6        PORTB, 2
#define    LCD_D7        PORTB, 3

#define    LCD_D4_DIR    TRISB, 0    ; LCD data bits
#define    LCD_D5_DIR    TRISB, 1
#define    LCD_D6_DIR    TRISB, 2
#define    LCD_D7_DIR    TRISB, 3

#define    LCD_E        PORTA, 1    ; LCD E clock
#define    LCD_RW        PORTA, 2    ; LCD read/write line
#define    LCD_RS        PORTA, 3    ; LCD register select line

#define    LCD_E_DIR    TRISA, 1    
#define    LCD_RW_DIR    TRISA, 2    
#define    LCD_RS_DIR    TRISA, 3    

#define    LCD_INS        0    
#define    LCD_DATA    1

D_LCD_DATA    UDATA 0x20
COUNTER        res    1
delay        res    1
temp_wr        res    1
temp_rd        res    1

    
GLOBAL    temp_wr

PROG1    CODE


;***************************************************************************
    
LCDLine_1
    banksel    temp_wr
    movlw    0x80
    movwf    temp_wr
    call    i_write
    
return
    GLOBAL    
LCDLine_1

LCDLine_2
    banksel    temp_wr
    movlw    0xC0
    movwf    temp_wr
    call    i_write
    
return
    GLOBAL    
LCDLine_2
    
d_write                      
    call    LCDBusy
    bsf        STATUS
C    
    call    LCDWrite
    banksel    TXREG            
;move data into TXREG 
    movwf    TXREG
    banksel    TXSTA
    btfss    TXSTA
,TRMT        
    
goto    $-1
    banksel    PORTA    
    
return
    GLOBAL    
d_write
    
i_write                    
    call    LCDBusy
    bcf    STATUS
C
    call    LCDWrite
    
return
     GLOBAL    
i_write

rlcd    macro    MYREGISTER
 
IF MYREGISTER == 1
    bsf        STATUS
C
    call    LCDRead
 
ELSE
    
bcf        STATUSC
    call    LCDRead
 
ENDIF
    
endm
;****************************************************************************




; *******************************************************************
LCDInit
    clrf    PORTA
    
    banksel    TRISA            
    bcf        LCD_E_DIR
    bcf        LCD_RW_DIR
    bcf        LCD_RS_DIR
    
    movlw    
b'00001110'
    
banksel    ADCON1
    movwf    ADCON1    

    movlw    0xff            
    banksel    COUNTER
    movwf    COUNTER
    movlw    0xFF
    banksel    delay
    movwf    delay
    call    DelayXCycles
    decfsz    COUNTER
F
    
goto    $-3
    
    movlw    
b'00110000'        
    
movwf    temp_wr
    bcf    STATUS
,C
    call    LCDWriteNibble

    movlw    0xff            
    movwf    COUNTER
    movlw    0xFF
    movwf    delay
    call    DelayXCycles
    decfsz    COUNTER
F
    
goto    $-3

    movlw    
b'00110000'        
    
movwf    temp_wr
    bcf    STATUS
,C
    call    LCDWriteNibble

    movlw    0xFF            
    movwf    delay
    call    DelayXCycles
                        
    movlw    
b'0011000'        
    
movwf    temp_wr
    bcf    STATUS
,C
    call    LCDWriteNibble

        
    movlw    0xFF            
    movwf    delay
    call    DelayXCycles


    movlw    
b'00100000'        
    
movwf    temp_wr
    bcf    STATUS
,C
    call    LCDWriteNibble

    call    LCDBusy            
;Busy?
                
    
movlw    b'00101000'        
    
movwf    temp_wr
    call    i_write

    movlw    
b'00001101'        
    
movwf    temp_wr
    call    i_write
            
    movlw    
b'00000001'        
    
movwf    temp_wr
    call    i_write

    movlw    
b'00000110'        
    
movwf    temp_wr
    call    i_write    

    movlw    
b'10000000'        ;DDRAM addresss 0000
    movwf    temp_wr
    call    i_write

    movlw    
b'00000010'        ;return home
    movwf    temp_wr
    call    i_write


    
return

    GLOBAL    
LCDInit    
; *******************************************************************








;****************************************************************************
;     
_    ______________________________
RS  _>--<______________________________
;     _____
RW       _____________________________
;                  __________________
E   ____________/                  ___
;     _____________                ______
DB  _____________>--------------<______
;
LCDWriteNibble
    btfss    STATUS
C        Set the register select
    bcf        LCD_RS
    btfsc    STATUS
C    
    bsf        LCD_RS

    bcf        LCD_RW            
Set write mode

    banksel    TRISB
    movlw    
b'00000000'
    
movwf    TRISB
    bcf        LCD_D4_DIR        
Set data bits to outputs
    bcf        LCD_D5_DIR
    bcf        LCD_D6_DIR
    bcf        LCD_D7_DIR

    NOP                
Small delay
    NOP

    banksel    PORTA
    bsf        LCD_E            
Setup to clock data
    
    btfss    temp_wr
7            Set high nibble
    bcf        LCD_D7    
    btfsc    temp_wr
7
    bsf        LCD_D7
    btfss    temp_wr
6
    bcf        LCD_D6    
    btfsc    temp_wr
6
    bsf        LCD_D6
    btfss    temp_wr
5
    bcf        LCD_D5    
    btfsc    temp_wr
5
    bsf        LCD_D5
    btfss    temp_wr
4
    bcf        LCD_D4
    btfsc    temp_wr
4
    bsf        LCD_D4    

    NOP
    NOP

    bcf        LCD_E            
Send the data

    
return
; *******************************************************************





; *******************************************************************
LCDWrite
;    call    LCDBusy
    call    LCDWriteNibble
    BANKSEL    temp_wr
    swapf    temp_wr
f
    call    LCDWriteNibble
    banksel    temp_wr
    swapf    temp_wr
,f

    
return

    GLOBAL    
LCDWrite
; *******************************************************************





; *******************************************************************
;     
_____    _____________________________________________________
RS  _____>--<_____________________________________________________
;               ____________________________________________________
RW  _________/
;                  
____________________      ____________________
E   ____________/                    ____/                    __
;     _________________                __________                ___
DB  _________________>--------------<__________>--------------<___
;
LCDRead
    banksel    TRISB
    bsf    LCD_D4_DIR        
Set data bits to inputs
    bsf    LCD_D5_DIR
    bsf    LCD_D6_DIR
    bsf    LCD_D7_DIR        

    BANKSEL    PORTA
    btfss    STATUS
C        Set the register select
    bcf        LCD_RS
    btfsc    STATUS
C    
    bsf        LCD_RS

    bsf        LCD_RW            
;Read 1

    NOP
    NOP            

    bsf        LCD_E            
Setup to clock data

    NOP
    NOP
    NOP
    NOP

    btfss    LCD_D7            
Get high nibble
    bcf        temp_rd
7
    btfsc    LCD_D7
    bsf        temp_rd
7
    btfss    LCD_D6            
    bcf        temp_rd
6
    btfsc    LCD_D6
    bsf        temp_rd
6
    btfss    LCD_D5            
    bcf        temp_rd
5
    btfsc    LCD_D5
    bsf        temp_rd
5
    btfss    LCD_D4            
    bcf        temp_rd
4
    btfsc    LCD_D4
    bsf        temp_rd
4

    bcf        LCD_E            
Finished reading the data

    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP

    bsf        LCD_E            
Setup to clock data

    NOP
    NOP

    btfss    LCD_D7            
Get low nibble
    bcf        temp_rd
3
    btfsc    LCD_D7
    bsf        temp_rd
3
    btfss    LCD_D6            
    bcf        temp_rd
2
    btfsc    LCD_D6
    bsf        temp_rd
2
    btfss    LCD_D5            
    bcf        temp_rd
1
    btfsc    LCD_D5
    bsf        temp_rd
1
    btfss    LCD_D4            
    bcf        temp_rd
0
    btfsc    LCD_D4
    bsf        temp_rd
0

    bcf        LCD_E            
Finished reading the data

FinRd
    
return
; *******************************************************************






; *******************************************************************
LCDBusy
                    
Check BF
    rlcd    LCD_INS
    btfsc    temp_rd
7
    
goto    LCDBusy
    
return

    GLOBAL    
LCDBusy
; *******************************************************************






; *******************************************************************
DelayXCycles
    decfsz    delay
F
    
goto    DelayXCycles
    
return
; *******************************************************************
    

    
END


發表於: 2005/6/2 22:07
頂部


有關蜂鳴器..
#35
中級會員
中級會員


大家好
我想測試demoboard上的蜂鳴器 不知有無範例程式
我使用的PIC 為16F873A 燒錄器是 ICD2 Demoboard是
PICDEM 2 PLUS 我在PIC initial裡要如何設定呢??
謝謝

發表於: 2005/5/25 11:16
頂部


Re: 請問一下...LCD的問題
#36
中級會員
中級會員


好阿 謝謝你 麻煩你了
我的mail是 g9375027@cycu.edu.tw
真的很感謝

發表於: 2005/4/14 15:30
頂部


請問一下...LCD的問題
#37
中級會員
中級會員


請問一下 我使用 ICD2 的燒錄器
Demoboard是PICDEM 2 PLUS
我使用光碟片裡的驅動LCD程式
有很多錯誤 請問一下 程式要如何解決或使用
謝謝

發表於: 2005/4/13 18:27
頂部


請教跑馬燈的程式...
#38
中級會員
中級會員


大家好 我的程式出一點問題 出來的結果應該要是每200ms的跑馬燈,但是結果出來只跑了一次,並沒循環。我使用16F873A,DEMO BOARD是PICDEM 2 PLUS,使用ICD 2
以下是我的程式,謝謝:
start:
banksel TRISB ; Set PORTD for output port
movlw b'00000000'
movwf TRISB
banksel PORTB
movlw b'00011000'
movwf STATUS
;
LED_Start bcf STATUS,C
movlw b'00000001'
movwf PORTB
LED_Next call delay_200ms
rlf PORTB
btfss STATUS,C
goto LED_Next
goto LED_Start


;
;--------- 200 md delay routine --------
;
delay_200ms:
movlw VAL_200MS
movwf count_200ms
loop_20ms call delay_10ms
decfsz count_200ms,F
goto loop_20ms
return
;
;-------- 10 ms delay routine ----------
;
delay_10ms:
movlw VAL_10MS
movwf count_10ms
loop_ms call delay_500us
decfsz count_10ms,F
goto loop_ms
return
;
;-------- 0.5 ms delay routine -----------
;
delay_500us:
movlw VAL_500US
movwf count_us
dec_loop nop
nop
nop
nop
nop
decfsz count_us,F
goto dec_loop
return
;
end

發表於: 2005/3/8 16:40
頂部


新手上路...請問一下
#39
中級會員
中級會員


大家好 我目前對ICD 2 還不是很熟悉
請問一下 我看說使用手冊上說明
EC OSC option has been selected using jumper J7
是要如何接呢?
謝謝各位

發表於: 2005/2/22 14:42
頂部


新手上路...請問一下如何解決
#40
中級會員
中級會員


請問一下 我要connect ICD 2時
卻出現
ICDWarn0020: Invalid target device id (expected=0x21, read=0x7)

我有將通用序列匯流排關閉在開啟,也有下載operating system ,還是無法解決。
請問還有蛇ㄇ辦法呢? 請大家幫忙謝謝

發表於: 2005/1/27 16:54
頂部



« 1 2 3 (4) 5 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------