• 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 (ruxj4)




Re: PIC16F887取值問題(附程式)
#1
新會員
新會員


請問我程式打這樣 也有同樣的效果嗎???

Attach file:


Link only for registered users

發表於: 2009/11/15 17:08
頂部


Re: PIC16F887取值問題(附程式)
#2
新會員
新會員


請問該怎麼用for迴圈取樣五次呢??

while迴圈 也可以做到這樣的效果嗎?

發表於: 2009/11/15 14:00
頂部


PIC16F887取值問題(附程式)
#3
新會員
新會員


我取值 做AD轉換
心電要取五次後呼吸跟溫度取一次這樣...

我程式打這樣 結果VB上顯示的波型

心電跟呼吸會一樣
都取一次的話就不會了

還是我可以下面程式打五次??
GODONE=1; //AD轉換開始(ADCON0=0X85)
while(GODONE); //轉換完成的話.跳出
ECG1=ADRESH; //轉換好的值存入ECG
ECG11=ADRESL; //轉換好的值存入ECG1

感謝各位幫忙~~

Attach file:


Link only for registered users

發表於: 2009/11/14 20:37
頂部


877A跟887暫存器 位址 哪裡不樣?
#4
新會員
新會員


之前用877a 現在改用887  

寫法應該都一樣 
暫存器名稱有哪個不一樣??

我知道877A (ADGO) 要改成887(GODONE )

還有哪要注意呢?!

Header Files裡
我加了 cnfig877a.h pic.h usart.h

Other Files裡
我加了pic16f887.h

有哪裡要改掉?

謝謝各位回答

Attach file:


Link only for registered users

發表於: 2009/10/31 14:01
頂部


請教P16F877A除錯問題
#5
新會員
新會員


組譯後 出現
----------------
Cannot open file (Include File "p16f877a.h" not found)

Illegal opcode(ECGbufh)

Symbol not previously defined(INTF)

Missing argument(s)

等字樣.....

請問是我哪裡出了問題呢?!

附程式 幫幫我

Attach file:


Link only for registered users

發表於: 2009/9/26 14:14
頂部


Re: PIC 877A Debugger
#6
新會員
新會員


-----------------------------------------------
出現15個Error訊息
Debug build of project `D:\program\a4.mcp' started.
Preprocessor symbol `__DEBUG' is defined.
Fri Sep 25 20:21:05 2009
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "D:\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F877A "a4.asm" /l"a4.lst" /e"a4.err" /d__DEBUG=1
Error[105] D:\PROGRAM\A4.ASM 1 : Cannot open file (Include File "p16f877a.h" not found)
Error[122] D:\PROGRAM\A4.ASM 2 : Illegal opcode (ECGbufh)
Error[122] D:\PROGRAM\A4.ASM 3 : Illegal opcode (IDX)
Error[122] D:\PROGRAM\A4.ASM 4 : Illegal opcode (SYSTEMinit)
Error[122] D:\PROGRAM\A4.ASM 5 : Illegal opcode (Delay_x_mS)
Error[122] D:\PROGRAM\A4.ASM 6 : Illegal opcode (Delay_1mS)
Error[122] D:\PROGRAM\A4.ASM 7 : Illegal opcode (TMR1H_Cary)
Error[122] D:\PROGRAM\A4.ASM 8 : Illegal opcode (OK)
Error[122] D:\PROGRAM\A4.ASM 9 : Illegal opcode (ex_int_flag)
Error[122] D:\PROGRAM\A4.ASM 10 : Illegal opcode (interrupt)
Error[108] D:\PROGRAM\A4.ASM 11 : Illegal character ({)
Error[113] D:\PROGRAM\A4.ASM 13 : Symbol not previously defined (INTF)
Error[128] D:\PROGRAM\A4.ASM 13 : Missing argument(s)
Error[113] D:\PROGRAM\A4.ASM 13 : Symbol not previously defined (中斷觸發)
Error[128] D:\PROGRAM\A4.ASM 13 : Missing argument(s)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `D:\program\a4.mcp' failed.
Preprocessor symbol `__DEBUG' is defined.
Fri Sep 25 20:21:06 2009
----------------------------------------------------------------------
BUILD FAILED

發表於: 2009/9/25 20:26
頂部


PIC 877A Debugger
#7
新會員
新會員


將溫度(數值) 心電、呼吸變化(圖形)
取值做AD轉換

不知是哪錯了 一直組譯不過去....
#include <p16f877a.h>
char ECGbufh,ECGbufl,Wbufh,Wbufl,Tmrh,Tmrl,Alltmr,breathebufh,breathebufl;
int IDX;
void SYSTEMinit(void); //副程式
void Delay_x_mS(int); //定義延遲副程式
void Delay_1mS(void);
char TMR1H_Cary=0;
double OK;
char ex_int_flag=0; //中斷旗標
void interrupt isr_Sevr ( void )
{

if(INTF==1) //中斷觸發
{
INTF=0;
if(ex_int_flag==0) //
{
TMR1ON=1; //1=啟用Timer1
ex_int_flag=1; //

}
else
{
TMR1ON=0; //Timer1歸回初始值
ex_int_flag=0;
Tmrh=TMR1H;
Tmrl=TMR1L;
Alltmr=TMR1H_Cary;
TMR1H=0x00;
TMR1L=0x00;
TMR1H_Cary=0X00;

}
}
else if(TMR1IF==1)
{
TMR1IF=0;
TMR1H_Cary++;
if(TMR1H_Cary==0x00)
{
TMR1H=0X00;
TMR1L=0X00;
ex_int_flag=0;
TMR1ON=0;
}
}

}
void main (void) //主程式
{
SYSTEMinit(); //晶片初始化設定

while(OK < 1000)
{ Delay_x_mS(2);
ADCON1=0x80; //1000 0000 右對齊;FOSC/32;Channel-0(AN0);0=A/D轉換模塊關閉和不消耗工作電流
ADCON0=0x89; //1000 1001 右對齊;FOSC/32;Channel-1(AN1);1=A/D轉換模塊通電
IDX=0X00;
Delay_x_mS(2);
ADGO=1; //開始A/D轉換

while(!(ADIF==1 && IDX==0));

Wbufh=ADRESH; //Wbufh=A/D轉換結果存到暫存器高位元
Wbufl=ADRESL; //Wbufl=A/D轉換結果存到暫存器低位元
ADIF=0; //

while(!(ADIF==0 && IDX==0));

ADCON0=0x91; //1001 0001 FOSC/32;Channel-2(AN2);1=A/D轉換模塊通電
Delay_x_mS(2);
ADGO=1; //開始A/D轉換

while (!(IDX==0 && TRMT==1)); //

TXREG=0xF0; //送溫度檔頭傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=0xFF; //溫度檔頭傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=Wbufh; //將溫度高位元資料傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=Wbufl; //將溫度低位元資料傳到TXREG(傳送暫存器)



IDX=0X01; //
OK++;
ADIF=0;

}

while(1)
{
ADCON1=0x80; //1000 0000 FOSC/32;Channel-0(AN0);0=A/D轉換模塊關閉和不消耗工作電流
ADCON0=0x81; //1000 0001 FOSC/32;Channel-2(AN2);1=A/D轉換模塊通電
Delay_x_mS(2);
ADGO=1; //開始A/D轉換
IDX=0X00;

while(!(ADIF==1 && IDX==0));

ECGbufh=ADRESH; //將轉換結果暫存器高位元傳到ECGbufh
ECGbufl=ADRESL; //將轉換結果暫存器低位元傳到ECGbufl
ADIF=0;

while (!(IDX==0 && TRMT==1));

TXREG=0xF1; //將檔頭傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=0xFF; //將檔頭傳到傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=ECGbufh; //將ECG高位元資料傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=ECGbufl; //將ECG低位元資料傳到TXREG(傳送暫存器)


while(!(IDX==0 && TRMT==1));

TXREG=breathebufh; //將呼吸高位元資料傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=breathebufl; //將呼吸低位元資料傳到TXREG(傳送暫存器)


while(!(IDX==0 && TRMT==1));

TXREG=Tmrh; //將計時器高位元資料傳到TXREG(傳送暫存器)

while(!(IDX==0 && TRMT==1));

TXREG=Tmrl; //將計時器低位元資料傳到TXREG(傳送暫存器

while(!(IDX==0 && TRMT==1));
TXREG=Alltmr;

IDX=0X01;
ADIF=0;

}

}
void SYSTEMinit(void)
{
OK=0x00;
IDX=0X00;
TRISA=0XFF;
TRISB0=1;
SPBRG=0x23;
TXSTA=0x24;
RCSTA=0x80;
SYNC=0;
BRGH=1;
SPEN=1;
TXEN=1;
Tmrh=0X00;
Tmrl=0X00;
Alltmr=0x00;
ECGbufh=0x00;
ECGbufl=0x00;
Wbufh=0x00;
Wbufl=0x00;
INTCON=0XD0;
TMR1IE=1;
TMR1H=0X00;
TMR1L=0X00;
T1CON=0X30;
}
void Delay_x_mS(int N_mS)
{
int Loop_mS ;

for ( Loop_mS = 0 ; Loop_mS < N_mS ; Loop_mS++ )
{
Delay_1mS();
}

}

//*** Delay 1mS with 16MHz crystal

void Delay_1mS(void)
{
int Del_1mS;

for (Del_1mS = 0 ; Del_1mS < 199 ; Del_1mS ++ )
{
asm("nop");
asm("nop");
}

發表於: 2009/9/25 20:24
頂部


pic877a抓心電圖跟溫度訊號
#8
新會員
新會員


目前電路已經做好了
心電圖使用AD620
溫度使用LM35

心電圖輸出 接到AN0
溫度輸出 接到AN1

電路輸出→PIC輸入→rs232→電腦

想要心電圖1秒抓 120HZ
溫度1秒抓兩次


pic程式要如何寫呢?

發表於: 2009/8/24 20:34
頂部






:::

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... ]

教育訓練中心

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