音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

MC68HC08匠人應(yīng)用手記

作者:程序匠人 欄目:單片機
MC68HC08匠人應(yīng)用手記
MC68HC08匠人應(yīng)用手記.txt

前言

匠人最近開始和MC68HC908的親密接觸.(忙著和它約會,連上網(wǎng)次數(shù)也少了許多,嘿嘿....)
作為一個長期用匯編的工程師"轉(zhuǎn)行"用C寫程序,感覺挺累人,不過苦中也有樂.愿將原汁原味的手記與大家分享.
這篇手記將隨著匠人的經(jīng)驗值不斷升級而不斷更新,其中會有心得,也會有困惑,權(quán)當是一個過程的見證吧.
首先得聲明,匠人是第一次用摩托羅拉的芯片,也是第一次用ANSI_C語言,所以手記中如有錯誤和問題,望大伙指點.還有一點需要聲明的是,本文中有些段落是從其它文檔中摘抄或整理而來,匠人無抄襲之意.


/*****************************************
01.C語言中嵌入?yún)R編的4種方式:
*****************************************/

//嵌入?yún)R編方式1(宏):
EnableInterrupts;                       // 開中斷                       


//嵌入?yún)R編方式2(可嵌入多條指令):
asm {                                             
  lda _PTB ;
}                     

//嵌入?yún)R編方式3(單條指令):
asm  eor #0b00000100 ;    


//嵌入?yún)R編方式4(單條指令):
asm (" eor #4 ");            



/*****************************************
02.C語言中數(shù)的表示方式:
*****************************************/

****舉例如下:

二進制:      0b00000100
十進制:   4
十六進制: 0x4

****注意:匯編指令的表示方式與C的表示方式不一樣,但如果是在C中嵌入?yún)R編,則也要按C的方式來寫
****問題:八進制的引導(dǎo)符號還不知道


/*****************************************
03.循環(huán)體的3種寫法:
*****************************************/
寫法1:
while(1);
{
......
}



寫法2:
for(;;);
{
......
}


寫法3:
loop:
    ......
    goto loop    




/*****************************************
04.關(guān)于復(fù)位及中斷的入口地址:
*****************************************/    
所有的入口地址都存儲在$FFD0~$FFFF區(qū)域中
比如:復(fù)位地址存儲在$FFFE~$FFFF中(缺省值=DC8C,即復(fù)位后從DC8C處開始執(zhí)行)

****問題:如何修改入口地址,還不清楚


* - 本貼最后修改時間:2005-7-26 12:59:06 修改者:程序匠人

2樓: >>參與討論
AIRWILL
你用的啥編譯器啊,Code warrror 的功能可是非常強大的
遠在 keil 上啊

3樓: >>參與討論
程序匠人
對,就是Code warrror,功能確實很強,就是不太會用
 
4樓: >>參與討論
hotpower
頂一下
A人用C就是不一樣...

5樓: >>參與討論
lishuanghua
呵呵,匠人終于要用C了!
習慣后你會覺得用匯編是多么的累

6樓: >>參與討論
ehua
到這里看看吧
http://www.edatech.com/bbs/index.asp
下面是關(guān)于這個軟件的一些常見問題
http://www.edatech.com/bbs/dispbbs.asp?BoardID=3&replyID=284&id=284&star=1&skin=0

7樓: >>參與討論
汽車電子
是呀,Code warrror很好用,但
   都是Metrowerks的軟件,怎么支持ARM的就比支持MOTOROLA的差這么遠?

8樓: >>參與討論
pheavecn
我還是用的匯編呢。。
匠人也來淌這渾水了。
我的MON板自己做的。
可以交流一下。

9樓: >>參與討論
hotpower
匠人爭做AC人
二教主不該落后呀...A人辛苦呀...

我進論壇時幾乎發(fā)表都是A帖,有位網(wǎng)友說我不會C...

哈哈...那我就給他來個"變臉",現(xiàn)在全部C...

雖然自己是個AC人,但一般還是表面的C人...

10樓: >>參與討論
gtw
使用HC08的幾點經(jīng)驗
A  應(yīng)當先行完成各項設(shè)置,再去開中斷。
B  定義入口地址,有多種方法interrupt void (VECTOR_NUMBER) FUNC_NAME(void)即為其一,可以自動設(shè)置。
C  CodeWarrior對恒為“真”的表達式編譯時經(jīng)常會有提示,很羅嗦,如while(1);不如用for(;;)

* - 本貼最后修改時間:2005-7-4 13:56:31 修改者:gtw

11樓: >>參與討論
程序匠人
MC68HC908JL8匠人應(yīng)用手記_2005-07-04
MC68HC908JL8匠人應(yīng)用手記

前言
匠人最近開始和MC68HC908JL8的親密接觸.(忙著和它約會連上網(wǎng)次數(shù)也少了許多,嘿嘿....)
作為一個長期用匯編的工程師"轉(zhuǎn)行"用C寫程序,感覺挺累人,不過苦中也有樂.愿將原汁原味的手記與大家分享.這篇手記將隨著匠人的經(jīng)驗值不斷升級而不斷更新,其中會有心得,也會有困惑,權(quán)當是一個過程的見證吧.
首先得聲明,匠人是第一次用摩托羅拉的芯片,也是第一次用ANSI_C語言,所以手記中如有錯誤和問題,望大伙指點.

01.    C語言中嵌入?yún)R編的4種方式:
//嵌入?yún)R編方式1(宏):
EnableInterrupts;                       // 開中斷      

//嵌入?yún)R編方式2(可嵌入多條指令):
asm {                                             
  lda _PTB ;
}                     

//嵌入?yún)R編方式3(單條指令):
asm  eor #0b00000100 ;    

//嵌入?yún)R編方式4(單條指令):
asm (" eor #4 ");            
02.    C語言中數(shù)的表示方式:
****舉例如下:

二進制:      0b00000100
十進制:   4
十六進制: 0x4

****注意:匯編指令的表示方式與C的表示方式不一樣,但如果是在C中嵌入?yún)R編,則也要按C的方式來寫
****問題:八進制的引導(dǎo)符號還不知道


03.    循環(huán)體的3種寫法:
寫法1:
while(1);
{
......
}

寫法2(推薦):
for(;;);
{
......
}

寫法3:
loop:
    ......
    goto loop    

****網(wǎng)友gtw答:CodeWarrior對恒為“真”的表達式編譯時經(jīng)常會有提示,很羅嗦,如while(1);不如用for(;;)
04.    關(guān)于復(fù)位及中斷的入口地址:
所有的入口地址都存儲在$FFD0~$FFFF區(qū)域中
比如:復(fù)位地址存儲在$FFFE~$FFFF中(缺省值=DC8C,即復(fù)位后從DC8C處開始執(zhí)行)

****問題:如何修改入口地址,還不清楚
****網(wǎng)友gtw答:定義入口地址,有多種方法interrupt void (VECTOR_NUMBER) FUNC_NAME(void)即為其一,可以自動設(shè)置。


05.    對被調(diào)函數(shù)的說明(聲明):
1。如果被調(diào)用函數(shù)出現(xiàn)在主調(diào)用函數(shù)之后,則在調(diào)用之前應(yīng)該先對被調(diào)用函數(shù)的返回值類型作出說明
一般形式,如:void delay(void);

2。如果被調(diào)用函數(shù)出現(xiàn)在主調(diào)用函數(shù)之前,則不需要作出說明

3。如果被調(diào)用函數(shù)和主調(diào)用函數(shù)不在一個文件中,則說明方式如下:
extern void delay(void);        //注:如果不作說明,系統(tǒng)會警告,但也能進入DEBUG狀態(tài)
06.    對中文支持:
缺省的系統(tǒng)環(huán)境對中文的支持不好,表現(xiàn)為按刪除鍵時回將中文刪除一半從而顯示亂碼.
解決方法是選擇[Edit]菜單下的[Preferences…],并按如下設(shè)置:
將EDIT0R中的font&tabs中改動:

font選擇為宋體
script選擇為chinese_gb2312

****注:也可以在這里設(shè)置TAB所代表的空格數(shù)(缺省是2)



07.    中斷定義有兩種方法:
方法一:
#pragma TRAP_PROC
void IntFunc1(void)
{
/* your code */
}
In your prm file:
VECTOR ADDRESS 0xFFF4 IntFunc1 /* 0xFFF4 contains the address of IntFunc1 */

方法二:
interrupt 3 IntFunc1()
{
…/*code*/
}
Means that the third entry in the vector table is initialized with the address of IntFunc1().

08.    IO口在使用之前必須先初始化,否則會報錯


09.    相關(guān)網(wǎng)址
ehua 發(fā)表于 2005-7-3 09:27 侃單片機 ←返回版面
到這里看看吧: http://www.edatech.com/bbs/index.asp
下面是關(guān)于這個軟件的一些常見問題:
http://www.edatech.com/bbs/dispbbs.asp?BoardID=3&replyID=284&id=284&star=1&skin=0











10.    數(shù)據(jù)類型
類型                缺省格式    缺省范圍                    可選格式
CHAR(unsigned)            8bit            0~255                        8bit,16bit,32bit
signed CHAR            8bit            -128~127                        8bit,16bit,32bit
unsigned CHAR            8bit            0~255                        8bit,16bit,32bit
signed SHORT            16bit        -32768~32767                    8bit,16bit,32bit
unsigned SHORT            16bit        0~65535                        8bit,16bit,32bit
enum(signed)            16bit        -32768~32767                    8bit,16bit,32bit
signed int                16bit        -32768~32767                    8bit,16bit,32bit
unsigned int            16bit        0~65535                        8bit,16bit,32bit
signed LONG            32bit        -2147483648~2147483647        8bit,16bit,32bit
unsigned LONG            32bit        0~4294967295                8bit,16bit,32bit
signed LONG LONG         32bit        -2147483648~2147483647        8bit,16bit,32bit
unsigned LONG LONG        32bit        0~4294967295                8bit,16bit,32bit

1.    定義寄存器
C51  :   volatile unsigned CHAR Bank1R0         _at_ 0x
12樓: >>參與討論
程序匠人
pheavecn所說的自己做的是哪塊板?
我手頭這套包括2塊板,其中一塊有原理圖可以自己做,但另一塊接PC 的沒有原理圖而且看上去也蠻復(fù)雜的。


另:多謝各位關(guān)注。手記有點凌亂,大伙擔待些

13樓: >>參與討論
HIGHWAY
呵呵,不錯啊,大家多看看MOT也很好啊
 
14樓: >>參與討論
pheavecn
是指一頭接串口,一頭接IRQ/RESET/PB0~PB3的板。
就是調(diào)試時老是要你"Turn MCU POWER off(Under 0.1V)"的東東。
我給條經(jīng)驗:

如果你的電源接了大電容,最好先拿掉,或接個電阻在電源端,否則要等很久才掉電干凈,進調(diào)試模式不方便。

15樓: >>參與討論
我的未來
喜歡
 
16樓: >>參與討論
程序匠人
MC68HC908JL8匠人應(yīng)用手記_續(xù)
13.    IO口使用注意事項
1. IO口的方向寄存器中內(nèi)容與方向的關(guān)系
0代表輸入
1代表輸出
需要注意的是,這一點與其它一些芯片(如PIC,EMC,HT)正好相反

2.IO口在使用之前必須先初始化,否則會報錯

14.    關(guān)于強制類型轉(zhuǎn)換
符號:  ()
使用方法: (類型)(表達式)
使用強制類型轉(zhuǎn)換運算符可以將一個表達式轉(zhuǎn)換成所需的類型;
在強制轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型不變;
在給指針變量賦值時特別有用,比如當指針變量被定義為CHAR型,而需要將一個int型的變量地址賦值給該指針時,如果不作轉(zhuǎn)換,則系統(tǒng)會報警告.這時做個類型轉(zhuǎn)化則可避免該問題.
如:
wrpage(0x0000,(CHAR *)&ccc,2) ;    
//說明:由于ccc的數(shù)據(jù)類型為int型,所以要將其轉(zhuǎn)化為CHAR

又如:
    tx((CHAR)(ADDR_24%256));
    //送數(shù)據(jù)地址并檢測應(yīng)答信號   //說明:ADDR_24是int型數(shù)據(jù),要轉(zhuǎn)化為CHAR


17樓: >>參與討論
程序匠人
中斷的使用方法
15.    中斷的使用方法
關(guān)于中斷,有很多種方法,在AN2616中提到:
把#pragma TRAP_PROC 放在中斷程序前面,并把中斷向量表放到linker.prm。例如:
#pragma TRAP_PROC
void intSW1(void){
}
-------------------------------------------------
或者使用關(guān)鍵詞interrupt,并把向量表加入linker.prm。例如:
interrupt void intSW1(void){
}
-------------------------------------------------
把向量表的首地址放入linker.prm。例如:
VECTOR ADDRESS 0xFFD2 intSW1
-------------------------------------------------
在定義中斷程序的時候使用關(guān)鍵詞"interrupt"并把特定的中斷向量號。這種方法不需要在linker.prm中更改任何東西。例如:
interrupt 22 void intSW1(void){
}
這種方法有很明顯的優(yōu)點,它把所有的東西都寫在一個文件中,而不需要依賴于另一個文件。




18樓: >>參與討論
nishui
歡迎
我一年半前在用FREESCALE的8位單片機,現(xiàn)在用16位的單片機了,而且在做FREESCALE單片機的產(chǎn)品,希望大家一起交流學習啊。www.dyic.com.cn是我的網(wǎng)址

19樓: >>參與討論
程序匠人
定時器中斷頻率的計算
16.    定時器中斷頻率的計算
公式:    中斷頻率=總線頻率/(分頻因子*計數(shù)器預(yù)置值)
注:    總線頻率=晶振頻率/4
        分頻因子可設(shè)置為1,2,4,8,16,32,64

例如:    晶振頻率=8MHZ,總線頻率=2MHZ,分頻因子=32,預(yù)置值=625
        中斷頻率=2000000/(32*625)=100HZ

又如:    晶振頻率=9.8304MHZ,總線頻率=2.4567MHZ,分頻因子=1,預(yù)置值=65536(0X10000)
        中斷頻率=2457600/(1*65536)=37.5HZ

再如:    晶振頻率=9.8304MHZ,總線頻率=2.4567MHZ,分頻因子=64,預(yù)置值=19200(0X4B00)
        中斷頻率=2457600/(64*19200)=2HZ
-------------------------------------------------
初始化程序如下:
//定時器1初始化
//晶振頻率=9.8304MHZ,總線頻率=2.4567MHZ
//中斷頻率=總線頻率/(分頻因子*預(yù)置值)=2457600/(64*19200)=2HZ
T1SC=0b01000110 ;               //開中斷,分頻因子=64
T1MODH=0x4B;                 //預(yù)置值=0x4B00
T1MODL=0x00;
-------------------------------------------------


20樓: >>參與討論
程序匠人
如何產(chǎn)生LST文件
17.    如何產(chǎn)生LST文件
系統(tǒng)缺省時不會產(chǎn)生LST文件.如果需要查看LST文件,可以:
1.    選擇菜單[edit]->[P&E ICD SETTINGS]

2.    在彈出窗口中選擇[TARGET]->[ASSEMBLER FOR ……](匯編);或[COMPILER FOR ……](C)
3.    在窗口右邊點擊[options]


4.    在新彈出窗口中切換到[OUTPUT]頁
5.    在[generate listing file]前打勾即可

18.    問題
1.當使用定時器的某個通道作為定時器時,該通道對應(yīng)的IO口作普通IO口用,該如何處理?


21樓: >>參與討論
程序匠人
那天被代理害了....
他老人家給我一塊仿真板,卻不舍得給電源,還告訴我說用9V電源;結(jié)果我一上電....就一陣青煙....然后板子就報廢了.我仔細一瞅,原來是該用5V供電.

心痛啊~~~~~~~~~~

22樓: >>參與討論
computer00
那你也太沖動了吧?是不是剛拿到板,太激動了?嘿嘿
迫不及待的就上電了?

我這里有兩片MC68HC908JB8,帶USB接口的,一直想玩玩,可惜一直沒去弄它們,
哎,哪天沒事干了,就搬出來玩玩吧。拿來做個USB接口的電腦紅外遙控器
不錯。

23樓: >>參與討論
程序匠人
不是沖動,而是基于對代理商FAE的信任。。。
 
24樓: >>參與討論
宇宙飛船
樓主的調(diào)試器用哪個,我沒有摩托牌照,也想考摩托牌。
 
25樓: >>參與討論
syz528555
我有兩套代理尚送的仿真板.
一套仿JK系列,一套GP32系列.其實就是MOTO的MON8接口,從串口,并口,或USB
模擬出MON8的幾個腳定義,從這幾只腳對MCU進行操作,如下載CODE,讀CODE,單步,設(shè)斷點.
我用JK做過產(chǎn)品,資源夠豐富,選型多,豐儉由人,老少皆宜,開發(fā)方便.
就是買貨不方便,交期長,價錢貴.好象MOTO對散兵游勇興趣不大.
我把它作為超級大候補,一般不動用.除非我來做一個"勇氣"號,哈哈.

26樓: >>參與討論
程序匠人
是呀,產(chǎn)品牛比,人也牛比,不好交道
 
27樓: >>參與討論
xuhuadong
真是牛人用c,看你的c比看你的匯編還累
 
28樓: >>參與討論
程序匠人
xuhuadong多擔待些,匠人已聲明自己是第一次用C了
有些習慣一時改不過來

29樓: >>參與討論
程序匠人
關(guān)于堆棧指針的初始化問題,誰來指點一下?
不知該如何處理。牛人們來指點一下?

30樓: >>參與討論
computer00
C語言編譯器會自動初始化堆棧吧?
 
31樓: >>參與討論
hotpower
我也感覺奇怪...估計是AC人的愛好吧...
正在做ARM菜鳥,有空也跟匠人做個"68菜鳥"

http://www.21icbbs.com/club/bbs/bbsview.asp?essenceid=6698

32樓: >>參與討論
computer00
好,我也要來湊熱鬧。
編譯器是使用code warrror,那燒寫軟件呢?是通過串口燒寫的嗎?

匠人有空的話就給我多點信息吧,省得我跑到網(wǎng)上去搜索了,呵呵。。。

33樓: >>參與討論
syz528555
第三方提供燒寫軟件、如P&E company
第三方提供燒寫軟件、如P&E

34樓: >>參與討論
最愛韶涵
不一定,至少EW78K,要自己配置XCL文件
 
35樓: >>參與討論
程序匠人
嘿嘿,匠人是摸著石頭過河.
 
36樓: >>參與討論
程序匠人
關(guān)于堆棧指針...困惑中...

為何有此一問,源于今天和代理商FAE的一番交談,他老人家讓我嚇了一跳,他告訴我當堆棧溢出時,系統(tǒng)不會報告錯誤信息,也就是說我要自己計算程序?qū)Χ褩5淖畲笙?并由此設(shè)置堆棧指針.

說實話,匠人不知道C語言里如何計算堆棧消耗.因為有些C指令,系統(tǒng)會自動調(diào)用函數(shù).而且系統(tǒng)經(jīng)常喜歡把一些數(shù)據(jù)臨時壓入堆棧.我這個超級菜鳥無法判斷程序到底用了多少層堆棧

晚上運行DEMO程序看了一下,發(fā)現(xiàn)C語言編譯器確實會自動初始化堆棧(好像是187H?),而且一開始的兩條指令就是設(shè)置堆棧.匠人只是不明白系統(tǒng)自動設(shè)置堆棧的原理是什么,不知它依據(jù)什么來判斷?還是統(tǒng)一設(shè)置為187H?

37樓: >>參與討論
computer00
那你還好過了,你的河里還有石頭可以摸。而我的河呢?
里邊全是泥沙,連個石頭都沒得摸,只好里邊胡亂瞎游了。還要擔心被河水沖走了^_^

38樓: >>參與討論
computer00
一般編譯器都會使用最優(yōu)的方式來設(shè)置堆棧地址
比如51,51的堆棧的向上生長的,所以51的編譯器盡量將所有變量放在RAM的低地址
段。而把堆棧指針也盡量往低地址移。如果沒有指定變量地址,那么所有變量
都在前面,后邊的全部都作為堆棧來使用。這樣保證有最多的堆棧可以用。


的確堆棧溢出時不會報警,我以前就吃過這樣的虧,害我調(diào)試了好久,郁悶死了。

51是把普通函數(shù)的臨時變量重疊處理了,所以函數(shù)中的變量不會壓棧,只是要
保存返回地址需要壓棧。這樣函數(shù)多了,棧就用光了。

39樓: >>參與討論
程序匠人
computer00別灰心,匠人的條件比你好不到哪去
基本上也是東一榔頭西一榔頭的在搗鼓.你只要看看我這手記就知道有多亂了,^_^

40樓: >>參與討論
hotpower
我ARM菜鳥3天快畢業(yè)了,你還困在SP中???如何反彈???
今天網(wǎng)友exdata同志給我掃了一個大地雷...

哈哈,這回我就可把"ARM的牢底來坐穿"...雖然我連ARM長什么樣都不知道!!!

不象你們大上海坐地鐵...我們每天下地都過水坑...

http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1747443

41樓: >>參與討論
computer00
幸好我一開始就用的C語言開發(fā),也弄個幾個不算太小的程序
如那個MP3的源代碼,除了那個字庫的,另外的3K多行都是我一個個字敲出來,
再怎么說,在C語言的鍵盤輸入功底上總能比匠人略勝一籌吧?嘿嘿。
MP3源代碼見下邊的連接。拿出來炫炫先,雖然在前輩眼里看來沒什么,不過
我還是自我感覺挺良好的,
http://www.21icbbs.com/club/bbs/list.asp?boardid=25&page=2&t=1702031&tp=%u4E0A%u6B21%20%u786C%u76D8MP3%u64AD%u653E%u5668%20%u7684%u539F%u7406%u56FE%u53CA%u6E90%u4EE3%u7801%u6539%u8FDB%u7248

42樓: >>參與討論
程序匠人
hotpower 就別挖苦匠人了,
您的武器是坦克----轟轟烈烈,咱這工具只有榔頭----敲敲打打.不是一個檔次嗎

43樓: >>參與討論
computer00
匠人你應(yīng)該換個角度想問題嘛,
你是榔頭,他是坦克,我是電腦。
電腦可以操縱坦克,但是對你的榔頭可是無可奈何。。。。。。
閃人先。。。。。。。。。

44樓: >>參與討論
aMonster
看了匠人的筆記
看了第一篇還有點話說,
看了后面的就沒什么說的了,
呵呵,
匠人進步很快啊~~
沒有早點看到這個帖子
JL8用C是有點挑戰(zhàn)性的,尤其是在成本的束縛下,
更需要編出高效率,低容量,而通用性又不差的代碼啊~~
呵呵
看來匠人有的頭疼了

45樓: >>參與討論
程序匠人
aMonster所說的挑戰(zhàn)是指什么?
 
46樓: >>參與討論
程序匠人
轉(zhuǎn)貼,關(guān)于MON08
在MON08中疑惑的問題?
我看可很多FREESCALE的單片機的datasheet,在MONITOR ROM一章中會提到有兩種進入MONITOR rom的方式,一種為normal方式,一種為forced方式.forced方式較為簡單,不需要占用太多的I/O口,不需要一個高電壓,但是它需要一個特殊的條件,就是
If $FFFE and $FFFF contain $FF
其中$FFFE and $FFFF 是復(fù)位時的地址,也就是說只有在復(fù)位向量中包含FFFF,FFFF時在能進入這種方式.我對這一點不是很理解.它的意思是不是在芯片中沒有程序的時候.才能進入forced mode.
因為在上電復(fù)位的時候,$FFFE and $FFFF 中的數(shù)據(jù)會裝入程序計數(shù)器中,我想問下,$FFFE and $FFFF 中在芯片為空的時候是什么數(shù)據(jù)?在芯片非空的時候是什么數(shù)據(jù)?
----------------------------------------------
立志做個專業(yè)的工程師
  

發(fā)貼時間: Jul 21 2005 9:15AM ||          


  


strongchen     
 頭銜:版主
  
    

對,$FFFE和$FFFF就是復(fù)位中斷的矢量地址。當芯片為空時,復(fù)位矢量也為空,其中的數(shù)據(jù)為$FFFF。當芯片復(fù)位后,監(jiān)控程序會檢測復(fù)位矢量的值,如果發(fā)現(xiàn)數(shù)據(jù)為空(即為$FFFF),監(jiān)控程序會強制啟動,使芯片進入監(jiān)控模式,即所謂的強制方式(forced)。
----------------------------------------------
海納百川 有容乃大
  

發(fā)貼時間: Jul 21 2005 9:56AM ||          


  


天涯倦客     
  
    

那這種燒寫方式意義好像不大啊,只有是空芯片才能進入監(jiān)控方式.如果單只有這種方式,那好像就是一次性燒寫了.
----------------------------------------------
立志做個專業(yè)的工程師
  

發(fā)貼時間: Jul 21 2005 10:16AM ||          


  


strongchen     
 頭銜:版主
  
    

所以還有一種正常方式(normal)。當芯片不空時,通過特殊電平的設(shè)置,仍可以進入監(jiān)控模式。
----------------------------------------------
海納百川 有容乃大
  

發(fā)貼時間: Jul 21 2005 11:34AM ||          


  


天涯倦客     
  
    

謝謝版主,這個我知道,但是這種方式需要占用一些I/O口,不過現(xiàn)在也在湊合著用.i/o口盡量復(fù)用吧
----------------------------------------------
立志做個專業(yè)的工程師
  

發(fā)貼時間: Jul 21 2005 11:45AM ||          


  


strongchen     
 頭銜:版主
  
    

只是復(fù)位時需要幾個口線的電平設(shè)置。進入監(jiān)控狀態(tài)后,只需一個口進行通訊,其余的口線都被釋放,可用回正常功能。
----------------------------------------------






47樓: >>參與討論
mcu2002
up,關(guān)注中
我也正用到MC68HC908JL8芯片,希望以后大家可以多多交流.

48樓: >>參與討論
黃果樹
re:
code warrror功能強大,但是感覺界面沒有PIC的MPALB友好,特別是仿真時另外彈出一個窗口,不能在此窗口修改源代碼,編譯.煩!
聽說code warrror軟仿真功能強大,一直沒有琢磨過,期望那天有高手出馬,寫本教程!
mon08的仿真模式,斷點只能設(shè)一個,占用IO口,沒有經(jīng)驗的很難連接上,連接上也會很容易死掉,必須復(fù)位..還不如一些小日本的mcu(也用片上仿真).目前我用過的最好的片上仿真的8bit mcu是ZILOG的新款FLASH mcu,專用一個DBG口仿真燒錄,一連就上.百發(fā)百中:)

* - 本貼最后修改時間:2005-8-1 0:27:03 修改者:黃果樹

49樓: >>參與討論
黃果樹
張明峰跳到FREESCALE了,匠人找他切磋切磋!
 
50樓: >>參與討論
lufeijian
哈哈!終于有人討論MC68HC08.html">MC68HC08的MCU了,好啊
我也在學習MC68的MCU,仿佛是在學8086。。。嘿嘿


51樓: >>參與討論
勇敢的葉子
我的捕捉中斷進不去,能不能幫我看一下問題出在哪呢?
我寫的是一個用捕捉測頻率的小程序,剛開始學著做,水平很差勁,在寫中斷服務(wù)程序的時候總是進不去啊,
我寫了一段程序想看一下是不是進入中斷了:
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908JL8.h> /* include peripheral declarations */
int i=0 ;
interrupt 3 void read1 ()
         {
         
         for (i=0;i<=1000;i++)
         {
          PTA=0XFD;
          PTB=0X3F;
         }
          T1SC0_CH0F=0;
          }

       void main()
{
  EnableInterrupts; /* enable interrupts */
  /* include your code here */

  T1SC=0X42;
  T1MODH=0X03;
  T1MODL=0XE8;
  T1SC0=0XC4;
  DDRA=0XFF;
  DDRB=0XFF;
  DDRD=0XEF;/* 初始化 */
  PTA=0XEF;
  PTB=0X5B;
    while (1)
     {
    ;}
    
  __RESET_WATCHDOG();
  
}
中斷之后讓數(shù)碼管顯示一個數(shù),可是總是沒有反映,是什么問題呢?

52樓: >>參與討論
程序匠人
經(jīng)驗教訓
20.    關(guān)于MON08調(diào)試的頻率
由于強制通訊波特率為FBUS/256,因此總線頻率受到主機軟件允許的標準波特率的限制
當晶振=9.8304MHZ時,內(nèi)部總線=9.8304/4=2.4576MHZ.

這里會有一個問題,即調(diào)試時的工作頻率和產(chǎn)品的實際工作頻率不一致

21.    關(guān)于全局變量
全局變量必須在main的初始化中進行初值設(shè)置,
否則,系統(tǒng)不會為其分配固定地址.這會導(dǎo)致變量中的數(shù)據(jù)丟失.
這個問題讓匠人吃了許多藥

22.    關(guān)于運算中需要注意的問題
當不同長度的變量進行運算勢,要特別當心,避免某些變量被”截肢”
//比如:
unsigned LONG aaa;
unsigned int bbb;
unsigned int ccc;
        bbb=1000    ;
        ccc=2000;
//下面的指令計算后,aaa并沒有如預(yù)期的變成20000000,而是變成了33920,原因是高位被裁減掉了
        aaa=bbb*ccc;
//改成下面的指令后,結(jié)果正確
        aaa=ccc;
        aaa=aaa*bbb;
        


53樓: >>參與討論
程序匠人
黃果樹說的問題確實困擾著匠人
mon08的仿真模式,斷點只能設(shè)一個,占用IO口,沒有經(jīng)驗的很難連接上,連接上也會很容易死掉,必須復(fù)位.

54樓: >>參與討論
黃果樹
程序匠人!如果你的公司MCU用量大的話,
建議向代理商借一個8000RMB的那種仿真器.好用及了!

55樓: >>參與討論
newcore

好貼,偶正有這個東東的問題,MARK一下。。。
匠人兄現(xiàn)在在做這個呀,呵呵,正好,有問題可以找到人請教了:)

有空的話看看偶的問題吧:
http://www.21icbbs.com/club/bbs/list.asp?boardid=11&page=1&t=1771546&tp=MOTOROLA%20hc908ap64%u8FDE%u63A5%u51FA%u9519%3F
謝先!

56樓: >>參與討論
yanfengzhu
不錯
 
57樓: >>參與討論
yadog
reMC68HC08匠人應(yīng)用手記
沒事兒也去瞅瞅

58樓: >>參與討論
音樂樂樂
請教匠人,
---全局變量必須在main的初始化中進行初值設(shè)置,
否則,系統(tǒng)不會為其分配固定地址.這會導(dǎo)致變量中的數(shù)據(jù)丟失.

這是什么編譯器?我用過的編譯器怎么都沒有這個問題?如果不賦值,則全局變量會自動初始化為0吧?

59樓: >>參與討論
agency1980
終于有人討論MOTO
我也是MOTO一族!使用JL8,QY4,LK24等!

60樓: >>參與討論
程序匠人
音樂樂樂,我也在困惑中....
我舉個例子:
有一個變量,我在程序中對其的賦值最多只有3種狀態(tài):0,1,2.
按理,不論何時停下程序,查看該變量都應(yīng)該在0~2之間吧?但實際上我發(fā)現(xiàn)每次數(shù)據(jù)都亂跳了.后來沒辦法在初始化段里加了一條賦值語句居然就好了.

今天發(fā)現(xiàn)有些變量即使在初始化中加了賦值語句也沒用(感覺是數(shù)據(jù)被沖掉了).還請高手們指點迷津呢!

61樓: >>參與討論
雁舞白沙
什么好MCU ?改天我也用用!
 
62樓: >>參與討論
程序匠人
轉(zhuǎn)貼:這幾天在研究面費的M68uics08得到一個結(jié)論
    >>歡迎您,請先登陸 | 注冊 | 網(wǎng)友通信簿 | 排行 | 搜索 | 修改資料 | 退出登錄    
  
     中電網(wǎng)專業(yè)技術(shù)論壇
    飛思卡爾?半導(dǎo)體(FREESCALE SEMICONDUCTOR, Inc.)[返回]
       瀏覽:這幾天在研究面費的M68uics08得到一個結(jié)論
     您是本帖的第 114 個閱讀者     
* 貼子主題: 這幾天在研究面費的M68uics08得到一個結(jié)論    


liu1234     
  
    
這幾天在研究面費的M68uics08得到一個結(jié)論
以qt4為例:ics mon08進入監(jiān)控時不需用戶關(guān)心pta1,pta4的0、1狀態(tài),即使j9-j13的跳線完全斷開也沒有關(guān)系,而cyclone mon08必需關(guān)心這兩腳的0、1狀態(tài)否則無法進入監(jiān)控模式j(luò)9必需1,j10必需0,以上結(jié)論對否,請指正
----------------------------------------------
liu1234就是我,歡迎訪問我的博客http://www.mcublog.com/blog.asp?NAME=liu1234
  

發(fā)貼時間: Jul 19 2005 1:40PM ||          


  


strongchen     
 頭銜:版主
  
    

我認為應(yīng)該是,當芯片為空時,PTA1和PTA4的狀態(tài)無需關(guān)心;而芯片非空時,要進入監(jiān)控模式,必須在IRQ腳上加高電壓,且PTA1必須為1,PTA4必須為0。
----------------------------------------------
海納百川 有容乃大
  

發(fā)貼時間: Jul 19 2005 1:55PM ||          


  


liu1234     
  
    

我也認為這個結(jié)論是錯的,可是說明書上這段話怎么理解
3.2. Cyclone MON08 接口
Cyclone MON08 接口要求用戶注意進入監(jiān)控模式的I/O 腳的限制(例如當進入監(jiān)控模式時,某
些腳必須拉高或拉低)。另一方面,Cyclone MON08 可以供給目標系統(tǒng)電源和時鐘信號。具體的
信息請參見Cyclone 用戶手冊。
3.3. ICS MON08 接口
ICS MON08 接口不要求用戶注意進入監(jiān)控模式的I/O 腳的條件(也就是說如果需要進入監(jiān)控模
式,M68UICS08 板自己會處理)。目標電源和時鐘信號是由T7 和T8 提供的。
使用ICS MON08 接口時有下述要求:
MON08 接口連接的目的是提供一個將MCU 與目標系統(tǒng)板其他部分隔離的方法。所有連到MON08 接
插口的MCU 信號都不應(yīng)再連到目標板的其他任何地方(地線除外)。當MON08 連接不用時,
MON08 接插口的腳3-4、5-6、7-8、9-10、11-12、13-14、15-16,以及MON08 的腳1 到1
個腳的插頭間要加上短接跳線。這樣就將目標MCU 與目標板完全連接起來,從而允許目標系統(tǒng)的
正常運行。當MON08 電纜加在M68UICS08 和目標板之間,即使目標MCU 在目標板上,也可以對
它進行編程和調(diào)試等操作。
除了復(fù)位時,M68UICS08 將MODE1# .. MODE5#與TGT_MODE1# .. TGT_MODE5#連通。復(fù)位
時,MODE1# .. MODE5#有電壓加在上面從而配置MCU,使其復(fù)位后進入相應(yīng)的模式。(即監(jiān)控
模式的條件可以通過M68UICS08 的J9 到J13 來設(shè)置)。PTA0 及PTB0 和PTB1 不用連到
TGT_xxxx,因為這些信號用于與調(diào)試軟件的串行通訊。
復(fù)位和外部中斷(/IRQ)信號的上拉應(yīng)該放在MON08 接插頭的目標板一邊,而不應(yīng)放在MCU 那
一邊。將復(fù)位或外部中斷(/IRQ)腳連接出去可能導(dǎo)致無法通過MON08 進行調(diào)試,還可能引起目
標板上元器件的損壞,因為這些腳上的信號電壓可能高達7.5Vdc。請參見3.4 應(yīng)用示例,它推
薦了將MCU 連接到MON08 接插頭以及目標板其他部分的原理圖。
這個接插頭可以布置成8 行× 2 列,間距為0.1 英寸的通孔,用導(dǎo)線將相應(yīng)的信號腳相連,這
樣,以后經(jīng)MON08 接口調(diào)試完成的板子不用再給每個MON08 信號加短接跳線就能作為產(chǎn)品板使
用。當然對于那些要用MON08 接口調(diào)試的板子,則須將導(dǎo)線割斷并安上一個連接到M68UICS08
的接插頭。此時再要恢復(fù)正常運行, 就要加短接跳線了。請參見附帶的
M68EPA08QTQY/M68EPA08JLJK 電路板
----------------------------------------------
liu1234就是我,歡迎訪問我的博客http://www.mcublog.com/blog.asp?NAME=liu1234
  

發(fā)貼時間: Jul 19 2005 1:59PM ||          


  


strongchen     
 頭銜:版主
  
    

這段話的意思就是,當采用Cyclone MON08接口方式時,所有的口線電平都要在用戶的目標板上配置;而采用ICS08 MON08接口方式時,M68UICS08已在主板上對相應(yīng)口線進行了配置,所以用戶的目標板上就無需再去配置。
----------------------------------------------
海納百川 有容乃大
  

發(fā)貼時間: Jul 19 2005 2:20PM ||          


  


liu1234     
  
    

我總結(jié)如下:1、當芯片為空時,PTA1和PTA4的狀態(tài)無需關(guān)心;而芯片非空時,要進入監(jiān)控模式,必須在IRQ腳上加高電壓,且PTA1必須為1,PTA4必須為0。2、當采用Cyclone MON08接口方式時,用戶必需注意進入監(jiān)控條件的引腳電平不要與目標板的實際連接電平相沖突,M68UICS08主板未對二者進行隔離,但提供時鐘和電源信號,而ics mon08接口M68UICS08主板對二者進行隔離,使得僅在復(fù)位時進入監(jiān)控條件的引腳電平與目標板的實際連接不相通(為目標板提供進入監(jiān)控條件的電平),脫離復(fù)位狀態(tài)后二者是相通的,但不提供時鐘和電源信號。3、二者實際上都是利用mcu的mon08接口,沒有本質(zhì)的區(qū)別
----------------------------------------------
liu1234就是我,歡迎訪問我的博客http://www.mcublog.com/blog.asp?NAME=liu1234
  

發(fā)貼時間: Jul 19 2005 5:04PM ||          


  


liu1234     
  
    

關(guān)于M68UICS08主板和m68eptqx連接問題
1嚴格按照說明書跳線
2串口線至少需要4芯兩個db9,2-2,3-3,4-4,5-5即可。
----------------------------------------------
liu1234就是我,歡迎訪問我的博客http://www.mcublog.com/blog.asp?NAME=liu1234
  

發(fā)貼時間: Jul 19 2005 5:08PM ||          


  


angel007     
  
    

兩個板子就那么幾個跳線,跳來跳去,也不通啊。
有沒有可能MCU燒了?   

發(fā)貼時間: Jul 19 2005 5:23PM ||          


  


天涯倦客     
  
    

芯片為空是什么意思?是不是指芯片沒有被寫過.如果這樣的話,那豈不是一次性芯片.
我在DATASHEET上看到有兩種燒寫程序的方式.一種是normal MONITOR mode另一種是forced MONITOR mode.normal MONITOR mode需要9v高壓,且需要幾個i/o口要固定點平.forced MONITOR mode相對簡單.不需要高壓.但是有一個條件(If $FFFE and $FFFF contain $FF),這一點看不懂,是不是就是你們所說的芯片為空?
另外覺得FREESCALE的mcu燒寫實在是麻煩!
----------------------------------------------
立志做個專業(yè)的工程師
  

發(fā)貼時間: Jul 19 2005 5:56PM ||          


  


liu1234     
  
    

$FFFE and $FFFF 內(nèi)容為 $FF是空芯片?沒有用戶程序當然是空芯片了。
----------------------------------------------
liu1234就是我,歡迎訪問我的博客http://www.mcublog.com/blog.asp?NAME=liu1234
  

發(fā)貼時間: Jul 19 2005 6:12PM ||          


  


liu1234     
  
    

搞不懂你們怎么會連不通這塊板子還是比較好用的,照我說的來,通用板這邊j1接電源9v,j2標準dte到dce的標準串口線(一頭公DB9,一頭母DB9各芯線一一對應(yīng),不要交叉),波特率9600,j3,1-2,j4,CLOSE,j5,1-2,j6,1-2,j7,1-2,j8連到評估板的t8,j9,1-2,j10,2-3,j11,1-2,j12,2-3,j13,1-2
評估板這邊j1j2j3CLOSE,p2-p5,u1插qt4芯片靠底安裝,t7連通用板的T7,t3連通用板的t3,t1,3-4,5-6,7-8,9-10,11-12,13-14,15-16,1-右邊的單針1。
先運行編程軟件看芯片能否燒寫,此時通用板兩個led都會亮
----------------------------------------------
liu12
63樓: >>參與討論
xuhuadong
mon08的仿真功能仿不了多斷點,太累了
我用過mcuez508的SR12仿真器,10000元的,很好用,就是很笨重,后來他們送了一個mon08,連最基本的鎖項環(huán)都仿不了,只能放一個斷點。


64樓: >>參與討論
mgf006
是不是比KEIL 好用呀。。
是不是比KEIL 好用呀。。我沒有用過呀。。
在那能找到教程?

65樓: >>參與討論
boy123
好,,我也來學學..
這里也有Motolora單片機討論專版.

加密是$FFF6~$FFFD共8個byte的內(nèi)容,可以從S19中設(shè)置,也可在P&E中設(shè)置。

用P&E  時,Target MCU Security bytes 選項(目標 MCU安全碼) 要通過安全碼檢測就必須給出正確的安全碼,安全碼由處理器 FLASH存儲器的$FFF6到$FFFD八字節(jié)組成。編程軟件連續(xù)地記錄安全碼的改變,并把它們存儲到 SECURITY.INI文件中,用于安全碼檢測。用戶使用“User”文本對話框手動設(shè)置安全碼,或者點擊“Load from S19”從相同的 s19文件中調(diào)用安全碼。忽略安全碼檢測失敗并進入監(jiān)控模式(IGNORE security failure and enter MONITOR mode ):該選擇框使軟件能忽略安全碼檢測錯誤,并進入監(jiān)控模式(要保證波特率和通訊口設(shè)置正確,電源正確)。但不能進入 FLASH存儲器。只能對整片 MCU的 FLASH進行擦除后方可進行編程燒錄和校驗。

如果正確地進入監(jiān)控模式,軟件讀取$FFF6到$FFFF的內(nèi)容,判定處理器是否通過了安全碼檢測,檢測到的返回值是$AD,說明存儲器是無效的或被加密。如果從$FFF6到$FFFF的所有字節(jié)讀的值均是$AD,說明芯片被加密,標志值是‘N’。如果 0到 5 的標志值是‘Y’,標志 6的值是‘N’,那么復(fù)位過程已經(jīng)正確進行,僅安全碼檢測沒有通過。制定正確的安全碼,重試一次,或者忽略安全碼檢測。


66樓: >>參與討論
程序匠人
都是堆棧惹的禍!
上次的問題解決了,原來是因為堆棧溢出將RAM中的正常數(shù)據(jù)沖掉了.今天將堆棧的尺寸設(shè)置的大些,困擾多日的問題就解決了.

一直以為code warrior會自動分配堆棧空間,現(xiàn)在才知道高估它的智慧了.

67樓: >>參與討論
陳雙君
5646456

20.    關(guān)于MON08調(diào)試的頻率
由于強制通訊波特率為FBUS/256,因此總線頻率受到主機軟件允許的標準波特率的限制
當晶振=9.8304MHZ時,內(nèi)部總線=9.8304/4=2.4576MHZ.

這里會有一個問題,即調(diào)試時的工作頻率和產(chǎn)品的實際工作頻率不一致

21.    關(guān)于全局變量
全局變量必須在main的初始化中進行初值設(shè)置,
否則,系統(tǒng)不會為其分配固定地址.這會導(dǎo)致變量中的數(shù)據(jù)丟失.
這個問題讓匠人吃了許多藥

22.    關(guān)于運算中需要注意的問題
當不同長度的變量進行運算勢,要特別當心,避免某些變量被”截肢”
//比如:
unsigned LONG aaa;
unsigned int bbb;
unsigned int ccc;
        bbb=1000    ;
        ccc=2000;
//下面的指令計算后,aaa并沒有如預(yù)期的變成20000000,而是變成了33920,原因是高位被裁減掉了
        aaa=bbb*ccc;
//改成下面的指令后,結(jié)果正確
        aaa=ccc;
        aaa=aaa*bbb;
        




68樓: >>參與討論
mcu2002
MC68HC908JL8加密設(shè)置問題
如DATASHEET所說,$FFCF地址單元的FLBPR寄存器為加密設(shè)置寄存器,其燒寫數(shù)值小于$70時全部FLASH存儲器內(nèi)容全部被加密,但是使用M68UICS08調(diào)試半仍然可以讀出FLASH存儲區(qū)的內(nèi)容,是不是我的設(shè)置方法有問題,或者是別的加密方法,請指教,謝謝!

69樓: >>參與討論
qjy_dali
匠人指責code warrior分配堆棧是沒有道理的
  code warrior for MC68HC08會為應(yīng)用生成一個啟動代碼,里面有堆棧大小設(shè)置。比如我的堆棧大小就是0x60,這可以自己改呀。很多設(shè)置都要小心

70樓: >>參與討論
xiexpeng
怎樣把程序?qū)懞谩?br> 
71樓: >>參與討論
crazybee
22.    關(guān)于運算中需要注意的問題
22.    關(guān)于運算中需要注意的問題
當不同長度的變量進行運算勢,要特別當心,避免某些變量被”截肢”
//比如:
unsigned LONG aaa;
unsigned int bbb;
unsigned int ccc;
        bbb=1000    ;
        ccc=2000;
//下面的指令計算后,aaa并沒有如預(yù)期的變成20000000,而是變成了33920,原因是高位被裁減掉了
        aaa=bbb*ccc;
//改成下面的指令后,結(jié)果正確
        aaa=ccc;
        aaa=aaa*bbb;

       aaa = (unsigned LONG)bbb*ccc;//效率會更高哦!
        


72樓: >>參與討論
程序匠人
多謝crazybee指點,匠人又學了一招
 
73樓: >>參與討論
newcore
借問
借匠人大哥的寶坻,請問一下:Bin文件轉(zhuǎn)換成S19據(jù)說可以用BinToS19這個工具,這個工具的指令格式是怎么樣的???
3KS a lot!!!


74樓: >>參與討論
mailbert
FLBPR不是加密設(shè)置寄存器!
FLBPR寄存器是FLASH寫保護設(shè)置寄存器。因為jl8可以in application program,就是程序可以自己寫FLASH。為防使誤寫入,可以設(shè)置FLBPR把FLASH全部或部分保護起來。這個寄存器與程序加密無關(guān)。

75樓: >>參與討論
阿西西里
用過MOTOROLA16位的,呵呵,還不錯
就是調(diào)試(BDM)方式不太舒服!
比起DSP有些麻煩

76樓: >>參與討論
lang5312
學習keil51中
 
77樓: >>參與討論
namexxh

關(guān)于C語言寫FLASH

請問有哪位大俠用C語言寫過MC68HC908GT16的內(nèi)部FLASH的嗎?怎么寫?請賜教,先謝謝啦!

78樓: >>參與討論
混凝土

請問大俠有沒有飛思卡爾芯片的教程

79樓: >>參與討論
光劍

我和67樓的仁兄遇到同樣的問題,請其他高手指點一下!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
電子工程師需要構(gòu)筑屬于自己的系統(tǒng)的知識框架
關(guān)于GSM的問題
請問誰用過24C02?
usb數(shù)據(jù)采集卡一定用FPGA,CPLD,DSP嗎?
請教TPIC6B595
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號