• slider image 442
  • slider image 492
  • slider image 493
  • slider image 494
  • slider image 495
  • slider image 496
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (u8814022)




請教關於pic 16f877 capture
#1
初級會員
初級會員


請問各位前輩:

pic裡面使用capture功能時,他正緣觸發或是負緣觸發

是當他訊號大於幾V時,他才認定是HIGH?

或是幾V以下,他當成是LOW?

因為小弟使用PIC配合多工器去擷取多個,PWM輸入

HIGH的時間,一直都有問題,所以有點懷疑是不是因為準

位的認定問題

發表於: 2006/11/22 22:14
頂部


Re: rs232 傳輸資料錯誤??
#2
初級會員
初級會員


好像就算你都算好也有可能會錯
但是不會常常錯就是了

好像可以在資料前後加check的位元


我是沒有用過啦~~~但是通常好像都是這個方法

好像叫check sum吧...

例如你傳8byte,程式判斷有傳到8個byte過來才接收當成正確資料

還是請高手解釋吧~~~我是嫩BB.....XD

發表於: 2006/11/21 2:17
頂部


Re: 使用多工器來擷取多個PWM訊號?
#3
初級會員
初級會員


那再請教一下,我多工器的input或是output需要再多接什麼東西(例如:電阻)嗎?

或是說我將我要擷取的pwm訊號,直接接到多工器的input

而output直接接到pic的接腳就好呢?

發表於: 2006/10/24 23:31
頂部


使用多工器來擷取多個PWM訊號?
#4
初級會員
初級會員


請問有人用多工器來擷取多個PWM訊號嗎?

我目前需要將感測器輸出的PWM訊號HIGH的時間抓出來

可能至少需要抓10組以上的PWM訊號

但是PIC 16F877並沒有那麼多的CPP模組

所以我想說透過多工器去切channel

不知道各位有沒有遇過這種狀況,可行否???

因為我初步測試起來好像第二個channel就會有問題?

發表於: 2006/10/24 2:01
頂部


[請問]關於暫存器的資料型態
#5
初級會員
初級會員


請問各位先進一個問題:

關於PIC16F877暫存器的資料型態,到底是屬於哪種型態呢?

例如:假設A/D的LOW_BYTE(ADRESL),我想把裡面的值給一個

變數a,這時候我a要是char或是什麼型態呢?目前我想把A/D

的結果,HIGH_BYTE以及LOW_BYTE藉由RS232傳輸到電腦端,

我該怎麼做呢?

RS232好像都要傳字串,但是我若是在PIC端將資料處理成

字串資料,例如:5V最高值"1023",這樣子我反而要傳4BYTE的

資料過去,無形中浪費了多傳2次的時間;所以我想說可不可以將

ADRESH還有ADRESL直接傳過去電腦端再作處理,因為這樣只

需要傳輸2BYTE就好,這樣電腦端處理比較快,比較能達到即時.



不知道大家在處理這種問題都是怎麼作,希望各位能幫我解

答,感謝大家!




發表於: 2006/10/4 18:12
頂部


<求助>關於rs232傳輸資料到電腦介面端
#6
初級會員
初級會員


各位先進大家好:

小弟想請問一下,目前我欲將A/D轉換的資料傳輸到電腦介面端(VB)繪製成圖,請問一般大家都會用哪種方式去傳.ADRESH和ADRESL這二個暫存器的資料算是16進制的嗎?
我是否要將之弄成字串或是陣列的方式來傳呢?

目前我會將ㄧ串字串傳到VB端並順利接收,但是因為字串後面會有一個空格(/0),這個好像會造成我進去VB之後要把"char"轉換成"int"的錯誤.

問題描述的不好,請各位見諒,希望各位前輩能幫我解答一下,或是有一些範例可以提供參考

感謝大家抽空看我的問題.謝謝!

發表於: 2006/8/7 20:19
頂部


Re: 請教關於16F877的A/D轉換RE2接腳不能使用的問題
#7
初級會員
初級會員


還是不太懂版主的意思耶...
可以再說清楚些嗎?
抱歉囉~~小弟真的對單晶片沒有什麼概念

發表於: 2006/1/4 21:01
頂部


Re: 請教關於16F877的A/D轉換RE2接腳不能使用的問題
#8
初級會員
初級會員


程式碼如下~~拜託各位了~~謝謝!

#include <pic.h>
#include "MID_LCD.h"


void A2D_0( unsigned char );
void LCD_ItoA(unsigned int);
unsigned char Set_BCD_ASCII(unsigned char);




unsigned int AD_Temp;
bit DS_Zero_Flag;

union {
int AD_10bit;
struct {
char AD_LSB;
char AD_MSB;
}AD_Byte;
}AD_Int;

/*****************************
DELAY FUNCTION
*****************************/

void delay_x_ms(int);
void del_1ms(void);

void delay_x_ms(int N_ms)
{
int Loop_ms;

for(Loop_ms = 0;Loop_ms<N_ms;Loop_ms++)
{
del_1ms();
}
}

void del_1ms(void)
{
int del_1ms;
for(del_1ms = 0;del_1ms<199;del_1ms++)
{
asm("nop");
asm("nop");
}
}

/***********************************
Convert A/D Channel
************************************/

void A2D_0( unsigned char channel )
{
unsigned char temp; // Temp storage
ADCON0=0b10111001;

temp = channel << 3; // Shift channel value three bits left
ADCON0 &= 0b11000111; // Clear channel select bits in ADCON0
ADCON0 |= temp; // Logically OR shifted channel value into place in ADCON0
delay_x_ms(100);

ADGO = 1; // Initiate conversion on selected channel
while (ADGO) ; // Poll ADGO bit until it clears, indicating conv. done
AD_Int.AD_Byte.AD_MSB=ADRESH;
AD_Int.AD_Byte.AD_LSB=ADRESL;
}



//***************************************
//* Program Main ( ) *
//***************************************
void main(void)
{
OpenLCD();
ADCON1=0b10000000; //all channel is A/D input and Right justified
PSPMODE=0;
TRISE2=1;
TRISC=0x00; // Set PortC for Output
PORTC=0x80; // Initila LED display = 0x80

while(1)
{
A2D_0(0x07); // Get 10-bit A/D result from CH7
LCD_Set_Cursor(0,0);
LCD_ItoA(AD_Int.AD_10bit);

}

}

void LCD_ItoA(unsigned int AD_Data)
{
AD_Temp=AD_Data;
DS_Zero_Flag=1;

putcLCD(Set_BCD_ASCII(AD_Data/1000)); // 顯示千位數
AD_Temp=AD_Temp%1000; // 取出百位以後的數

putcLCD(Set_BCD_ASCII(AD_Temp/100)); // 顯示百位數
AD_Temp=AD_Temp%100;

putcLCD(Set_BCD_ASCII(AD_Temp/10)); // 顯示十位數
AD_Temp=AD_Temp%10;

putcLCD(AD_Temp+='0'); // 顯示個位數
}


unsigned char Set_BCD_ASCII(unsigned char BCD_Data)
{
if (BCD_Data==0)
{
if (DS_Zero_Flag) return ' '; // 居先零抑制
else return '0'; // 顯示一般的零
}
else
{
DS_Zero_Flag=0; // 取消居先零的抑制
return (BCD_Data +='0'); // 並傳回 ASCII Code
}
}

發表於: 2005/12/22 16:03
頂部


請教關於16F877的A/D轉換RE2接腳不能使用的問題
#9
初級會員
初級會員


版主以及各位先進,小弟在此想請教一個問題
那就是我使用16F877的A/D轉換時,其他CHANNEL都沒問題,
偏偏RE2就是無法使用,我可能的設定均已設定,設定如下:

ADCON1 裡的 PCFG0~PCFG3 的設定,全部設定為類比應無問題。
相關暫存器TRISE裡面的Bit4,設定為PSPMODE=0
小弟實在已經想不出辦法囉~~~
希望各位前輩可以幫幫忙,感恩ㄚ~~~


發表於: 2005/12/20 17:04
頂部


Re: 請問A/D取多個通道輸入的問題
#10
初級會員
初級會員


請問版主的意思是
直接把
PSPMODE=0;
這樣設定嗎?
我是直接這樣設定,但是RE2那支接腳還是不能使用耶
而ADCON1沒有設錯

發表於: 2005/11/24 16:39
頂部



(1) 2 3 »



:::

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

教育訓練中心

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