• slider image 258
  • slider image 259
  • slider image 260
  • slider image 261
  • slider image 262
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: PIC10F320電源切換LED
#1
初級會員
初級會員


查看用戶資訊
您好,目前用ADC的方式已經可以用,但用HEF寫入和讀出資料都有問題,請問有無相關FLASH讀寫的教材或範例,謝謝

發表於: 5/24 18:28
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC10F320電源切換LED
#2
版主
版主


查看用戶資訊
該搜尋了一下 PIC10F320 的主網頁,但該網頁目前無法顯示,所以無法提供有關 Flash Memory 的範例程式。

但在 PIC10F320 的 Data Sheet 裡的第九章節裡: 9.0 FLASH PROGRAM MEMORY CONTROL 有詳細的 Flash Read/Erite 的流程及組合語言的範例,可以參考一下。

PIC10F320 沒有支援 HEF 的功能,只能用 Flash Memory 來取代,注意一下 Flash Memory 的抹寫次數只有 1 萬次左右。

發表於: 5/25 11:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC10F320電源切換LED
#3
初級會員
初級會員


查看用戶資訊
各位先進好,

請問我用ADC中斷的方式切換LED,但每次關掉再開,K的值有時不是按照順序,也就是LED有時會不按照順序亂閃,請問有什麼寫法可讓K的值有順序。

謝謝

void output()
{
switch(k)
{
case 1:
PORTA0=1;
PORTA1=0;
break;
case 2:
PORTA1=1;
PORTA0=0;
break;
case 3:
PORTA0=1;
Delay_ms(10);
PORTA0=0;
Delay_ms(10);
PORTA1=0;
break;
case 4:
PORTA1=1;
Delay_ms(10);
PORTA1=0;
Delay_ms(10);
PORTA0=0;
break;
}
}

void main()
{
init();
while(1)
{
output();
}
}


void interrupt ISR(void)
{
ADIF=0; //將ADC中斷FLAG清0

if(ADRES<0XC5 )
{
if(ADRES<0XC0 )
{
if(ADRES>0XB0 )
{
k=k+1;
if(k>4)
{
k=0;
}
}
}
}
GO_nDONE=1;
}

發表於: 10/16 7:52
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC10F320電源切換LED
#4
版主
版主


查看用戶資訊
1. 變數 k 用在中斷函數裡。一定要用 volatile char k 的方式宣告,否則變數 k 在中斷函數是會被最佳化功能刪除造成 k 在主程式的值不會歸零。

發表於: 10/16 11:01
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC10F320電源切換LED
#5
初級會員
初級會員


查看用戶資訊
您好,

改了也是一樣,關電再開,K值有時是3,再關電再開,K值有時是2,變成是亂數,不知還有沒有其它方法。

謝謝

發表於: 10/18 15:53
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC10F320電源切換LED
#6
版主
版主


查看用戶資訊
volatile char k =0;
程式一開始有設定k的初始值=0嗎?

改一下中斷程式看看:
volatile char k=0;

void interrupt ISR(void)
{

    if(
ADRES<=0XC5 K=0;
    
    if(
ADRES<0XC0 K=1;
    
    if(
ADRES>=0XB0 K=2;
    
    
ADIF=0//將ADC中斷FLAG清0

    
GO_nDONE=1;
}

發表於: 10/20 9:07

Edited by Ryang on 2020年10月20日 11:10:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC10F320電源切換LED
#7
初級會員
初級會員


查看用戶資訊
您好,改了之後變成開電先執行k=0,再執行k=2,關電後再開也一樣先執行k=0,再執行k=2,k=1不會執行到。修改0XC5,0XC0,0XB0的值也一樣。會不會是關電再開,ADC也會像開關一樣會有彈跳,ADRES的值忽大忽小。

發表於: 10/20 20:53
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC10F320電源切換LED
#8
版主
版主


查看用戶資訊
網站怪怪的,早上的回覆居然不見了。

程式裡的比較將 0xc0 與 0xc5 換一下,先比較最小的後再比較第二高的值...與此類推上去。

不過建議先設的寬一點的值從 0x40 --> 0x60 -->0x80 .... 先比較看看,switch case 的 k 值是從 1 開始判定,可以改從 0 開始嗎? 可以在 switch case 加入 default / break; 的判斷嗎?

發表於: 10/21 13:57
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You can attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

http://www.microchip.com.tw/modules/tadnews/index.php?nsn=18
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源