:::

論壇索引


Board index » All Posts (lancer0498)




Re: 請問如何解決按鍵彈跳問題?
資深會員
資深會員


用timer中斷
//使用Microchip APP025實驗板

// Writer : Edison

//2009/07/09 23:39

#include <p18f4520.h>
#include <timers.h>

#pragma config OSC=HS,BOREN=OFF,LVP=OFF,BORV=2,WDT=OFF,PWRT=ON

#define TMR1_VAL 55536
//中斷時間1ms==>65536-55536)*1/10MHz
#define OSC_CLOCK 10
#define key PORTAbits.RA4

unsigned char keydelay=0;

void scankey();

struct
{
unsigned TMR1INT:1;
unsigned keyfirst:1;
unsigned kin:1;
unsigned kconti:1;
}FLAGbits;

void timer1_isr(void);

#pragma code high_vector=0x08
void high_interrupt(void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code

#pragma interrupt timer1_isr
void timer1_isr(void)
{
PIR1bits.TMR1IF=0;
WriteTimer1(TMR1_VAL);
FLAGbits.TMR1INT=1;
}

void main(void)
{
PORTD=0x01;
TRISD=0;
TRISAbits.TRISA4=1; // 設定RA4為數位輸入腳位

OpenTimer1( TIMER_INT_ON &
T1_16BIT_RW &
T1_SOURCE_INT &
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_OFF );

WriteTimer1(TMR1_VAL);

PIR1bits.TMR1IF = 0; // 清除中斷旗標
IPR1bits.TMR1IP = 1; // 設定為高優先中斷
RCONbits.IPEN=1; // 開啟中斷優先功能
INTCONbits.GIEL = 1; // 開啟低優先中斷功能
INTCONbits.GIEH = 1; // 開啟高優先中斷功能
FLAGbits.TMR1INT=0;

while(1)
{
if(PORTAbits.RA4==0)
FLAGbits.kin=1;
if(FLAGbits.kin==1)
{
if(FLAGbits.TMR1INT==1) //判斷timer1中斷旗標
{
keydelay++; // keydelay
FLAGbits.TMR1INT=0;
if(keydelay==20) // delay 20ms
{
while(~PORTAbits.RA4); //等待按鍵放開
PORTDbits.RD0=!PORTDbits.RD0;
//LED0反向
keydelay=0;
// 重設delay時間
FLAGbits.kin=0;
// 按鍵旗標重設為0
}
}
}
}
}

發表於: 2009/9/15 18:11
頂部


Re: pic16f877 幫看哪錯了
資深會員
資深會員


Beee大大說的是,其實我也只是以18F的關念來看這個問題,
沒有考量到16F沒有優先權的問題

BANKSEL可以巨集指令來取代囉
BANK0 MACRO
bcf STATUS, RP0
bcf STATUS, RP1
ENDM

BANK1 MACRO
bsf STATUS, RP0
bcf STATUS, RP1
ENDM

以後就可以直接下 BANK0 or BANK1就可

發表於: 2009/9/14 13:38
頂部


Re: pic16f877 幫看哪錯了
資深會員
資深會員


1.中斷的設定就是依據所須要開的中斷去打開,注意一下有沒有優先權的問題,記的打開相關的設定就好,如周邊中斷.總中斷

2.banksel是個需指令,用來跳至所要操作的bank
如banksel portb-->則下行指令可對portb做存取
就不用在那邊寫bsf status,rp0....

發表於: 2009/9/13 12:21
頂部


Re: 18F4620能用C++程式語言編寫嗎
資深會員
資深會員


C++具有物件導向,C不具物件導向,
但單晶片所使用的C都是以ANSI C為基礎,
你可以參考ANSI C的書,基本上寫起來和C++很類似,

那個好寫?看自己,對暫存器及IC的功能與使用方式熟的話,
寫的好壞就看自己的頭腦!

發表於: 2009/9/1 13:05
頂部


Re: 轉盤位置控制
資深會員
資深會員


用Hall ic來偵測,將轉盤上裝小磁鐵,Power on時就先讓轉盤上的磁鐵轉到Hall的位置,這樣應該就可以了!

發表於: 2009/8/31 8:23
頂部


Re: 抱歉很基本的按鍵測試程式(但是compiler過不了)
資深會員
資深會員


//*********************************
若要作分隔的符號,要做註解

c語言用 //
組語用 ;

發表於: 2009/8/28 15:51
頂部


Re: P18F4520用組語寫出現的問題
資深會員
資深會員


感謝板主的回覆,小弟會看熟的!謝謝!

發表於: 2009/8/25 15:52
頂部


Re: 請教GPS To Uart Receive By PIC24F
資深會員
資深會員


請教typhoon兄,如何以HEX模式來開起.RAR,我不懂你說的方式,想了解一下,請您指點!

發表於: 2009/8/25 15:49
頂部


Re: LCD
資深會員
資深會員


你應該可用INDF搭配FSR來操作吧!

以往我用HOLTEK就是類似這樣用的,雖然我沒用過Microchip的ic點過LCD,但我用HOLTEK的指令要全點亮只要幾行,可是你寫了好幾十行,

HOLTEK語法如下:
CLEAR_RAM:
MOV A,40H
MOV MP0,A
CLR_RAM:
CLR IAR0
INC MP0
MOV A,80H
SUB A,MP0
SNZ Z
JMP CLR_RAM
RET
;;MP0-->FSR
;;IAR0-->INDF
Microchip語法如下
MOVLW 020h ;initialize pointer
MOVWF FSR ;to RAM
BANKISEL 020h
NEXT:
CLRF INDF ;clear INDF register
INCF FSR ;inc pointer
BTFSS FSR,4 ;all done?
GOTO NEXT ;no clear next
CONTINUE
我想這樣子來操作應該會比較容易吧

發表於: 2009/8/25 8:34
頂部


Re: 關於實驗板APP026-3X上的元件
資深會員
資深會員


可以用HT7533-1

材料行應該有吧

發表於: 2009/8/24 18:12
頂部



« 1 ... 12 13 14 (15) 16 17 18 ... 21 »



:::

Microchip連結

https://www.linkedin.com/company/microchiptechnologytaiwan
https://www.facebook.com/microchiptechnologytaiwan/?locale=zh_TW
https://mkpage.microchip.com/l/1082123/2025-03-12/2stnv5
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
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... ]

教育訓練中心

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