Ⅰ PIC單片機,我有機器碼,用什麼軟體能變成匯編
MPLAB應該就可以。
所謂的機器碼應該就是二進制文件吧?MPLAB IDE 可以進行反匯編(相信它也是最准確最全的PIC反編譯工具)。具體步驟如下:
1.啟動MPLAB IDE 執行Configure菜單下的Select Device選擇好晶元.
2. File菜單下Import導入要反編譯的HEX文件.
3.View菜單下Program Memory 查看程序存儲器的內容,在程序存儲器內容顯示窗口的左下角切換到Machine或Symbolic,在這個窗口上就可以看到每一個地址和HEX文件對應的ASM源程序.
「反編譯」就是察看源代碼,其實最佳的PIC「反編譯」工具就是MPLAB-IDE,也具有察看源代碼的功能。不過大家要注意,由於PIC採用分頁技術,「反編譯」後的源程序再次編譯後一般是不正確的,需要手工處理。
FILE--> IMPORT-->IMPORT TO MEMORY -->調入.HEX文件(你的機器碼應該是bin文件或者hex文件,都差不多了!)
然後再 WINDOW 中打開PROGRAM MEMORY窗口,就得到了源程序
注意所有未用的程序段反匯編後全部成了XORLW 0FFH
Ⅱ 請假單片機大神,pic16位的單片機有了解的嗎, 8 位的程序可以直接用在16位的嗎!!
你說的「程序」如果是編譯後的機器碼程序,則肯定不能直接應用的。
如果是「源程序」,即源碼文件,通常至少需要調整編譯目標環境才能應用。當然如果從8位的升級到16位時,C語言需要做的工作會少,如果是匯編代碼,則可能需要更多的工作才能升級到16位。
Ⅲ 將PIC單片機的10位硬體PWM擴展到16位 求編譯通過的源程序,最好C語言的。
思路如下:
通過定時來實現,犧牲2個來實現,T0一個做一個周期脈寬長度, (12MHz 65500us中斷一次,也就是16位),T1做脈寬調制,定時數據(0-65500,也是採集或設置的數據)之間變化,然後在某個埠輸出這個pwm 就可以了,最好推挽輸出,不然輸出不對.程序自己編吧,很簡單,我就是這樣弄的12位輸出的,還很好(51的)
不過16位的載波會很很低的,主頻最好還是要用24MHz 吧,也就是300Hz左右.
Ⅳ PIC單片機輸出PWM波的C語言源程序
#ifndef __PWM__H__
#define __PWM__H__
void pwm_ccp1(unsigned char a,unsigned char b);
void pwm_ccp2(unsigned char a,unsigned char b);
#endif
void pwm_ccp1(unsigned char a,unsigned char b) //左邊PWM
//CCP1 模塊的 PWM 工作方式,周期為(b+1)*4*Tosc*(TMR2前分頻值)=b+1 us //pwm高電平=a:CCP1CON(第四五位)Tosc*(TMR2前分頻值)
//pwm高電平=a:CCP1CON(第四五位)Tosc*(TMR2前分頻值)
{ //a>b時有最高轉速
CCPR1L=a; //* 設置工作循環的高 8bit 為 a
CCP1CON=0X0C; //0000 1100 設置 CCP1 為 PWM 工作方式,且工作循環的低 bit2 為 11*/
CCP1IE=0;; //* 禁止總中斷和外圍中斷 */
PR2=b; //* 設置 PWM 周期 */
TRISC2=0; //* 設置 RC2/CCP1 為輸出 */
T2CON=0X04; //* 0000 1000前分頻比為 1:1 ,後分頻器1:2,打開 TMR2 ,同時輸出 PWM 信號 */
}
void pwm_ccp2(unsigned char a,unsigned char b) //右邊PWM
//CCP2 模塊的 PWM 工作方式,周期為(b+1)*4*Tosc*(TMR2前分頻值),
//pwm高電平=a:CCP2CON(第四五位)Tosc*(TMR2前分頻值)
{
CCPR2L=a; //* 設置工作循環的高 8bit 為 a
CCP2CON=0X0C; //* 設置 CCP2 為 PWM 工作方式,且工作循環的低 bit2 為 11*/
CCP2IE=0; //* 中斷屏蔽
PR2=b; //* 設置 PWM 周期 */
TRISC1=0; //* 設置 RC1/CCP2 為輸出 */
T2CON=0X04; //* 前分頻比為 1 ,打開 TMR2 ,同時輸出 PWM 信號 */
}
Ⅳ 關於PIC單片機無法載入源文件
這個應該是你編譯器路徑問題,就譬如你選擇的是C編譯器添加的卻是ASM匯編的文件,當然會存放在other film裡面。
在Project/set language toolsuite選擇編譯器。在確定你編譯器選擇對了之後,到Project/set language tool location中設置編譯器路徑。
至於字體顏色大小的問題,在Edit/Porpertise/Text裡面設置。在顏色中選擇不同的關鍵字設置喜歡的顏色。
你打開工程才能設置編譯器,向導中也不會提示編譯器錯誤。譬如你編譯器沒裝,只能在設置編譯器的時候看到編譯器***.exe前面有個紅色的叉
Ⅵ 可以把PIC單片機里的源程序拷備出來嗎
如果晶元燒寫程序的時候沒開代碼保護,是可以讀出來的,但是讀出來的是機器碼,不是源程序了,你是不可能看懂的。除非你變成黑客帝國里的尼奧了,呵呵。
Ⅶ 求PIC單片機使用片內RTCC模塊源程序 最好是PIC18F24J11
//pic18f24j11
void setRTCCtime(void)
{
RTCCFG =0xa3;
RTCVALL=0x12; //year 0x
RTCVALH=0;
RTCVALL=0x28; //day
RTCVALH=0x09; //month
RTCVALL=0x13; //hour
RTCVALH=5; //weekday
RTCVALL=0x00; //second
RTCVALH=0x50; //min 0x
}
void setRTCCalarm(void)
{
ALRMCFG=0xcf;
ALRMVALL=0x12;
ALRMVALH=0;
ALRMVALL=0x28;
ALRMVALH=0x09;
ALRMVALL=0x13;
ALRMVALH=5;
ALRMVALL=0x15;
ALRMVALH=0x50;
}
void RTCC_Init(void)
{
_asm
movlb 0x0f
movlw 0x55
movwf EECON2,0
movlw 0xaa
movwf EECON2,0
bsf RTCCFG,5,1
_endasm
//TCCFGbits.RTCWREN = 1;
RTCCFGbits.RTCEN = 1;
// RTCCFGbits.RTCOE = 1;
ALRMCFG = 0xC8;
ALRMCFGbits.ALRMEN = 1;
setRTCCtime();
PIE3bits.RTCCIE = 1;
IPR3bits.RTCCIP = 1;
setRTCCalarm();
RTCCFGbits.RTCWREN = 0;
}
#pragma interrupt InterruptServiceHigh // "interrupt" pragma also for high priority
void InterruptServiceHigh(void)
{
if(PIR3bits.RTCCIF)
{
PIR3bits.RTCCIF = 0;
//程序
}
}
Ⅷ PIC單片機中的鏈接描述文件是什麼文件一定有必要加嗎裡面的含義代表什麼
鏈接描述文件說明PICmicro MCU的存儲器架構。這使鏈接器可把代碼在可用的ROM 空間,把變數放在可用的 RAM 空間。標記PROTECTED的區域不會被用於一般程序或數據的分配。只有在為代碼段指定了一個絕對地址時,或在鏈接描述文件中使用SECTION 偽指令將該代碼段分配給該區域時,代碼或數據才被分配到這些區域。
邏輯代碼段用於指定應將定義的存儲器區域的哪一個區域用於一段源代碼。要使用邏輯代碼段,用 SECTION 偽指令在鏈接描述文件中定義代
碼段,然後使用該語言內置機制在源文件中引用該名稱 (如 MPLAB C18 的 #pragma section)。此代碼段偽指令通過指定代碼段的名稱,
就是上面說的了 參考別人的說法,僅供參考!
Ⅸ pic單片機編譯成功後,不運行
可能是你沒有運行它,執行c++,需要兩步,第一步編譯(編譯成功後生成執行文件),第二步,運行(運行編譯生成的執行文件)。
編譯器是將「一種語言」翻譯為「另一種語言」的程序。編譯器的主要工作流程是源代碼→預處理器→編譯器→目標代碼→鏈接器→可執行程序。
PIC單片機的C編譯器只有HI-TECH公司出品PICC編譯器,和CCS公司的CCS編譯器。還有PIC的生產商Microchip公司自行生產的只針對PIC18/PIC24/dsPIC/PIC32系列單片機的C語言編譯器MCC(MCC18/MCC30/MCC32)。IAR軟體不能編譯PIC的C語言或匯編語言。
Ⅹ PIC單片機C源程序一般由幾部分組成
預定義(頭文件定義,宏定義,全局變數聲明等)
配置位的設置,就是__CONFIG ,這個其實可以再MPLAB的configure菜單欄中配置。但如果程序里配置了,就不能在MPLAB里配置。
程序主函數 void main()
各種程序子函數 ……
中斷子函數(PIC12、PIC16、PIC18等常用的8位PIC單片機只能有一個中斷子函數,因為他們沒有中斷向量表;而PIC24、dsPIC系列則有中斷向量表,可以有多個中斷子函數)