Re: PIC16F887取值問題(附程式)
|
||||
---|---|---|---|---|
新會員
|
請問我程式打這樣 也有同樣的效果嗎???
Attach file: Link only for registered users
發表於: 2009/11/15 17:08
|
|||
|
Re: PIC16F887取值問題(附程式)
|
||||
---|---|---|---|---|
新會員
|
請問該怎麼用for迴圈取樣五次呢??
while迴圈 也可以做到這樣的效果嗎?
發表於: 2009/11/15 14:00
|
|||
|
877A跟887暫存器 位址 哪裡不樣?
|
||||
---|---|---|---|---|
新會員
|
之前用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除錯問題
|
||||
---|---|---|---|---|
新會員
|
組譯後 出現
---------------- 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
|
||||
---|---|---|---|---|
新會員
|
-----------------------------------------------
出現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
|
||||
---|---|---|---|---|
新會員
|
將溫度(數值) 心電、呼吸變化(圖形)
取值做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抓心電圖跟溫度訊號
|
||||
---|---|---|---|---|
新會員
|
目前電路已經做好了
心電圖使用AD620 溫度使用LM35 心電圖輸出 接到AN0 溫度輸出 接到AN1 電路輸出→PIC輸入→rs232→電腦 想要心電圖1秒抓 120HZ 溫度1秒抓兩次 pic程式要如何寫呢?
發表於: 2009/8/24 20:34
|
|||
|