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

論壇索引


Board index » All Posts (87942009)




請教關於I/O設定問題
#1
新會員
新會員


各位先進好

小弟以PIC16F873A進行專案製作
以MCU點亮LED燈

程式如下:


#include <pic.h>
#include <pic168xa.h>
#include <htc.h>

void main(void)
{

PORTB=0x00;
TRISB=0;

while(1)
{
RB2=1;
}

}


經測試結果
發現RB2(單純的I/O功能)均無法使LED燈亮
參考了一些書籍及基本電路圖
皆看不出程式及電路之問題所在
請問各位先進
是否能提示我可能的原因

謝謝

發表於: 2008/8/26 15:24
頂部


請問PIC16F873A之RC振盪問題
#2
新會員
新會員


各位先進好

小弟使用PIC16F873A系列發展專案
遇到了clock相關問題
在此請教各位先進

1.當我使用外加crystal時
我所使用之crystal是否要如spec所規定之型號
電容大小是否要與spec所規定之值相同?
2.對於Rs,我應如何處理?
(外加crystal)
任意接一電阻是允許的嗎?
3.關於使用RC內部振盪電路
我外加RC元件
但所算之RC值,均未落於recommended values
若依RC之recommended values來算
無法得到4MHz之解
我的計算公式是
f=1/(2*pi*R*C)
請問是否正確?
還是我小數點計算有誤?

謝謝各位先進之指導

發表於: 2008/8/22 17:10
頂部


請問UART傳送資料問題(使用PIC16F873A,Hi-Tech c)
#3
新會員
新會員


各位先進好

小弟初次使用PIC16F873A,Hi-Tech c進行專案製作
程式如下:
#include <pic.h>
#include <pic168xa.h>

void main(void)
{
     
     
#define BAUD 9600     
     #define FOSC 4000000

     
unsigned char btBuf[9];
     
unsigned int i=0;
     
unsigned int nXOR;
     
int nSN;
     
int DIVIDER
     

     
// bit definition for port B:input from MCU 

     #define PORTB0 RB0
     #define PORTB1 RB1
     #define PORTB2 RB2
     #define PORTB3 RB3
     #define PORTB4 RB4
     #define PORTB5 RB5
     #define PORTB6 RB6
     #define PORTB7 RB7

     //port B:input from MCU 

     
TRISB0=1;
     
TRISB1=1;
     
TRISB2=1;
     
TRISB3=1;
     
TRISB4=1;
     
TRISB5=1;
     
TRISB6=1;
     
TRISB7=1;
     

     
//set up UART

     
TRISC6=0;         //set RC6 
     
TRISC7=1;         //set RC7
     
SPEN=1;
     
TXEN=1;           //transmitted enable
     
CREN=1;           //received enable
     
BRGH=1;
     
SYNC=0;
     
TX9=0;
     
DIVIDER=FOSC/(16*BAUD)-1;
     
SPBRG=DIVIDER;
   
     
// active input
     
     
if(RB7==1)
     {
        
nSN++;
        
btBuf[0]=0x80+(0x0F&nSN); 
        
btBuf[1]=0x7F
        
btBuf[2]=0x00
        
btBuf[3]=0x32
        
btBuf[4]=0x03;
        
btBuf[5]=0xAD;
        
btBuf[6]=0x00;
        
btBuf[7]=0x01;
     
        
nXOR=0;

        for(
i=0,nXOR=0;i<8;i++)
        {
            
nXOR^=btBuf[i];
        }
        
        
btBuf[8]=nXOR
        
        for(
i=0;i<=8;i++)
        {   
            
TXEN=1;            
            
TXREG=btBuf[i];    //transmitted data 
            
while(1)
            {
                  if(
TXIF==1) break;
            } 
        }
     }

     
// disable input

     
else if(RB7==0)
     {
        
nSN++;
        
btBuf[0]=0x80+(0x0F&nSN); 
        
btBuf[1]=0x7F
        
btBuf[2]=0x00
        
btBuf[3]=0x32
        
btBuf[4]=0x03;
        
btBuf[5]=0xAD;
        
btBuf[6]=0x00;
        
btBuf[7]=0x00;
     
        
nXOR=0;

        for(
i=0,nXOR=0;i<8;i++)
        {
            
nXOR^=btBuf[i];
        }
        
        
btBuf[8]=nXOR
        
        for(
i=0;i<=8;i++)
        {        
            
TXEN=1;            
            
TXREG=btBuf[i];    //transmitted data
            
while(1)
            {
                  if(
TXIF==1) break;
            } 
        }
     }

}

經程式驗證
與預期相同
但利用示波器讀取TX信號時
卻未讀出任何信號
(利用power supply外加電源、RB7接地)

想請教各位先進
可能出錯的地方在哪兒?
程式還缺少什麼部份?
configuration bit 之設定有什麼要注意的地方?

謝謝各位先進的幫忙
再次感謝

發表於: 2008/8/19 16:28

Edited by Ryang on 2008年08月20日 09:11:44
頂部


請問關於PICC(Hi-tech C)之程式燒錄問題
#4
新會員
新會員


各位先進好

小弟剛完成PIC16F873A之程式設計(使用Hi-tech c)
利用Leap PSTART燒錄器
出現以下訊息:

PICSTART Plus Firmware Version 04.50.09

PICSTART Program\Verify Report
01-Aug-2008, 16:51:19

Device Type: PIC16F873A
Address Range 0-9f


Program Memory Errors

Address Good Bad

0000: 118A 0000
0001: 2802 0000
0002: 01A6 0000
0003: 01A7 0000
0004: 1683 0000
0005: 1406 0000
0006: 1486 0000
0007: 1506 0000
0008: 1586 0000
0009: 1606 0000
000A: 1686 0000
000B: 1706 0000
000C: 1786 0000
000D: 1307 0000
000E: 1787 0000
000F: 1283 0000
0010: 1798 0000
0011: 1683 0000
0012: 1698 0000
0013: 1283 0000
0014: 1618 0000
0015: 1683 0000
0016: 1518 0000
0017: 1218 0000
0018: 1318 0000
0019: 30B0 0000
001A: 1283 0000
001B: 00A0 0000
001C: 01A1 0000
001D: 1683 0000
001E: 0099 0000
001F: 1283 0000
Any additional errors are not displayed.

這程式之燒錄是失敗的
請問各位先進
這原因是什麼?
(我確定chip腳位都完全正確)
在進行程式燒錄時,我該注意哪些問題?
有哪些參數是我必須要設定的?

在此謝謝各位先進的幫助

發表於: 2008/8/1 16:58
頂部


Re: 請教各位先進關於UART傳送資料之問題(利用Hi-Tech C)
#5
新會員
新會員


謝謝j大的回應

根據您的說法
我有疑問如下

我參考PIC16F873a之spec.
其中有一段話是這樣的
Bit SPEN (RCSTA<7>) and bits TRISC<7:6> have to be
set in order to configure pins RC6/TX/CK and RC7/RX/DT
as the Universal Synchronous Asynchronous Receiver
Transmitter
看起來應是將TRISC7,TRISC6設為1
請問SPEC當中所謂的set
是將暫存器設為1?
或是設為0?

因為我是新手
懇請j大或其他先進幫助我
謝謝

發表於: 2008/7/31 17:34
頂部


請教各位先進關於UART傳送資料之問題(利用Hi-Tech C)
#6
新會員
新會員


各位先進好

小弟為初學者,採用PIC16F873a進行專案製作
程式主體如下:

#define BAUD 9600 (設定Baud Rate)
#define FOSC 4000000

unsigned char btBuf[9];
unsigned int i=0;
unsigned int nXOR=0;
int nSN;
int DIVIDER;

// port B:input from MCU (將port B之所有接點設定為輸入端)

TRISB0=1;
TRISB1=1;
TRISB2=1;
TRISB3=1;
TRISB4=1;
TRISB5=1;
TRISB6=1;
TRISB7=1;


//set up UART(暫存器設定)

TRISC6=1; //set RC6
TRISC7=1; //set RC7
SPEN=1;
TXEN=1; //transmitted enable
CREN=1; //received enable
BRGH=1;
SYNC=0;
DIVIDER=FOSC/(16*BAUD)-1;
SPBRG=DIVIDER;

// active input

if(RB0==0)
{
nSN++;
btBuf[0]=0x80+(0x0F&nSN);
btBuf[1]=0x7F;
btBuf[2]=0x00;
btBuf[3]=0x32;
btBuf[4]=0x04;
btBuf[5]=0xAD;
btBuf[6]=0x00;
btBuf[7]=0x00;
btBuf[8]=0x01;

for(i=0,nXOR=0;i<9;i++)
{
nXOR^=btBuf[i];
}

btBuf[9]=nXOR;
for(i=0;i<=9;i++)
{
TXIF=1;
TXREG=btBuf[i]; //transmitted data
(將資料透過UART之相關暫存器TXREG傳出)
TXIF=0;
}
}

我利用MPLAB SIM進行模擬
可見TXREG收到btBuf[i]
但利用示波器及其他輔助工具
發現UART(TX)並無任何信號傳出
我已確認接線無誤
請各位先進指導
到底原因為何?
我的程式錯在哪裏
應該如何修正?

謝謝各位先進的幫忙

發表於: 2008/7/31 15:13
頂部


急,請教各位先進關於UART傳送的問題
#7
新會員
新會員


各位先進好
小弟初學PIC16F87x系列之UART應用(利用Hi-Tech C)
以下為部份測試程式
#define BAUD 9600     
#define FOSC 4000000

TRISB0=1;
TRISB1=1;
TRISB2=1;
TRISB3=1;
TRISB4=1;
TRISB5=1;
TRISB6=1;
TRISB7=1;

//set up UART

TRISC6=1;         //set RC6 
TRISC7=1;         //set RC7
SPEN=1;
TXEN=1;           //transmitted enable
CREN=1;           //received enable
BRGH=1;
SYNC=0;
DIVIDER=FOSC/(16*BAUD)-1;
SPBRG=DIVIDER;

RB1=1;

if(
RB1==0)
btBuf[0]=0x6F;
   
btBuf[1]=0x7a;...
  for(
i=0;i<=9;i++)
  {        
     
TXREG=btBuf[i];    //transmitted data 
     
while(1)
     {
        if(
TXIF==1) break;
      } 
  }
}


以下為我所遇到的問題
(我使用Animate進行程式追蹤)
1.我的程式設定RB1=1;
但在執行程式時
卻進入RB0之if結構中
請問原因為何?
2.當我進行debug時
出現以下訊息
"UART-W0001: Overrun, write occured over a full
TXREG SFR. Data lost"
(經驗證,UART並未傳出一串資料)
試了好幾種方法,都不成功\r
請問我該如何修改程式?

謝謝各位先進的幫忙

發表於: 2008/7/24 16:48

Edited by Ryang on 2008年07月25日 08:06:03
頂部


請問PIC16F87x系列如何用C語言實現功能
#8
新會員
新會員


各位先進好
小弟初次發文
希望大家能惠予指導

我第一次用PIC16F873a設計專案(使用C語言)
使用單純的I/O及UART功能
之前因不瞭解其特性
用了c18之語法
(參考書籍:微處理器原理與應用-曾百由著)
結果在complier時
才發現兩者之語法是不一樣的
因為這案子很急
請各位先進能否告訴我
我應該看哪些資料
才能利用C語言(用PIC16F873a)
正確設定I/O及利用UART傳送資料

再次謝謝大家

發表於: 2008/7/10 14:45
頂部






:::

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

教育訓練中心

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