導航:首頁 > 操作系統 > 修改單片機程序

修改單片機程序

發布時間:2022-08-11 14:35:54

⑴ 如何修改單片機的源程序

使用編程軟體如(keil,iar軟體)編寫和修改程序。選擇產生hex文件後,利用程序下載軟體flashmagic等(單片機不同而不同)下載程序到單片機。單片機上電運行即可!找本單片機書籍,應該就有很詳細的介紹!

⑵ 單片機上載出來的程序怎麼樣修改

D8751H是51內核的單片機。讀出來的程序應該是HEX文件。
如果沒有加密的話可以用偉福編譯器的反編譯功能反編譯成為.asm文件。就可以修改了!

⑶ 如何修改單片機的程序

你問這樣的問題說明你還不了解單片機,回去好好看書。簡單說一下,單片機本身是一個硬體,但它需要軟體的支持才能運行工作,軟體就是用戶編寫的程序然後編譯成機器可以識別的代碼,然後燒錄到這個硬體的存儲器中,修改單片機的程序這種說法也對也不對,對呢是說修改用戶編寫的源程序是對的,但單片機程序存儲器里的內容就不是修改了,而是擦除然後重新燒錄的過程,你想調整單片機的功能或其中的參數的話就需要再此單片機的開發環境下面編寫程序,然後編譯成為機器代碼,最後燒錄到單片機的程序存儲器中就完成了。

⑷ 單片機 ,一個單片機的程序能改嗎.

答:
1.要看你的單片機的型號,有一些單片機是OTP型的(OneTimePrograming的縮寫,中文意思就是一次性編程),這種單片機只可以編程一次,編程完畢便不可以讀出,一般在商品成品中多見,常用的AT89C51系列,AT89S51系列,STC89C51系列,還有很多型號單片機都是可以重復編程,一般都可以重復編程達1000次以上(AT89C51系列,AT89S51系列1k次,,STC89C51系列100k次(技術資料上是這樣說的)).
2.單片機編程,一般都用 匯編 和 C語言 外,還可以用機器語言(這個想是沒有人用了).(這點不是太懂,見笑,我一般用C語言,用keil編譯調試很方便,程序也易讀).
3.一般單片機都有相應的程序下載工具,這里所說的工具並不復雜,AT89S51系列用SPI下載,STC單片機都用串口下載.這兩者單片機的下載工具都可以自己做.如果你處於單片機入門階段,本人建議用AT和STC的單片機.

⑸ 單片機問題,改程序

#include <reg52.h>
#define DATPIN P0 //定義IO口
#define POSPIN P2 //定義IO口
sbit KEY0 = P3^2; //定義按鍵
sbit KEY1 = P3^3; //定義按鍵
unsigned char num0,num1,flag; //按鍵0和1按下次數
//共陽顯示碼
unsigned char code ledca[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//共陽位置碼
unsigned char code posca[]={0x01,0x02,0x04,0x08,0x10,
0x20,0x40,0x80};
void delayms(unsigned int); //毫秒延時
void display(unsigned char,unsigned char); //LED顯示
void ext0() interrupt 0
{
while(!key0);
flag=~flag;
}
void ext1() interrupt 2
{
while(!key1);
if(flag)num1++;
else num0++;
}
void main()
{
EX0=1;
EX1=1;
EA=1;
IT0=1; //邊沿觸發
IT1=1; //邊沿觸發
flag=0;
while(1)
{
display(num0%10,0);
display(num0/10,1);
display(num1%10,2);
display(num1/10,3);
}
} //毫秒延時
void delayms(unsigned int t)
{
unsigned int i,j;
for (j=0;j<t;j++)
{
for (i=0;i<123;i++)
{ }
}
}
//LED顯示,第1個參數為顯示數據,第2個為顯示位置
void display(unsigned char dat,unsigned char pos)
{
POSPIN=posca[pos];
DATPIN=ledca[dat];
delayms(5);
POSPIN=0x00;
}

⑹ 修改一個簡單的單片機程序

讓我想想
我修改了一下,把R2的賦值循環一次變小1(變少多少按你需要自己定咯,想變化快點就對這部分修改,當然,不可以用djnz咯),標星號部分是我改的 ,不懂可以HI我

ZWMADDR EQU 8002H
ZXMADDR EQU 8004H
ORG 0000H
ST: LJMP total;*************
ORG 0100H
total:;************
MOV R2,#25H ;****************
MAIN: MOV R3,#01H
MOV R4,#00H
LOOP: MOV DPTR,#CHAR
MOV A,R4
MOVC A,@A+DPTR
MOV DPTR,#ZXMADDR
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#ZWMADDR
MOVX @DPTR,A
djnz r2,exit;***************
LCALL DELAY
MOV A,R3
RL A
MOV R3,A
CJNE R3,#40H,NEXT
MOV R3,#01H
NEXT: INC R4
CJNE R4,#10H,LOOP
SJMP MAIN
exit:;**************
sjmp $ ;************
DELAY: PUSH 02H
LP1: PUSH 02H
LP2: PUSH 02H
LP3: DJNZ R2,LP3
POP 02H
DJNZ R2,LP2
POP 02H
DJNZ R2,LP1
POP 02H
DJNZ R2,DELAY
RET
CHAR: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
END

⑺ 怎樣修改這個單片機程序

程序已經修改好了。但是還是建議盡量自己修改。不懂再來問。嘿嘿嘿

#include <reg52.h>

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正轉表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反轉表格

sbit an1=P1^0;
sbit an2=P1^1;

void Delay(unsigned int i)//延時
{
while(--i);
}

void main()
{
unsigned char i;

if(!an1) // 如果按下按鍵1則執行下面的程序 實現電機正轉
{
P0=0x71;//顯示 F 標示正轉
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //輸出對應的相 可以自行換成反轉表格
Delay(500); //改變這個參數可以調整電機轉速 ,數字越小,轉速越大
}
}

if(!an2) // 如果按下按鍵2則執行下面的程序 實現電機反轉
{
P0=0x7C;//顯示 b 標示反轉
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //輸出對應的相
Delay(500); //改變這個參數可以調整電機轉速 ,數字越小,轉速越大
}
}
}

⑻ 單片機解密的程序能修改嗎

單片機解密的程序理論上是可以修改的,可實際做起來太難了。因為解密出來的是機器碼程序,需要反匯編成匯編程序,然後再去讀懂這些程序,才行做修改。如果原程序是用C語言寫的,經編譯後的機器碼程序,解密出來,再反編譯得到的匯編程序是很難讀懂的,更別說是修改了。如果原程序並不長,並是用匯編語言寫的,解密後反編譯的程序還可以讀懂,但需要有很強的編寫匯編語言程序的功底才能讀得懂。所以,一般情況下,解密出來的程序就是為了要機器碼,並不是為了修改的,而是把解密的機器碼程序直接燒寫到自己的單片機中去就得了。這要求在硬體上是完成與原來的電路一樣才行。

⑼ 單片機源程序怎麼修改

如果你只有hex文件的話,那麼抱歉了,那是修改不了的。如果不是那就打開工程再進行編程就行了呀。。。

⑽ 幫忙修改一個單片機程序

具體做什麼用的,你要說明一下,我給你大概舉出了你的錯誤,你自己看下然後更改一下程序,具體怎麼改,要知道功能才能幫你改,謝謝、、、
#include"reg52.h"
sbit lone=P1^5;//外接什麼?
sbit ltwo=P1^6;//外接什麼?
sbit start=P3^0; //外接按鍵嗎?
sbit stop=P3^1;//外接按鍵嗎?
/*
sbit AUTO=P3^2; //沒有用到
sbit hand=P3^3; //沒有用到
sbit forward=P3^4; //沒有用到
sbit reverse=P3^5; //沒有用到
sbit acceleration=P3^6;// 沒有用到
sbit deceleration=P3^7;//沒有用到
sbit direction=P1^0; //zhuanfan //沒有用到
*/
sbit RS=P1^1; //on off
sbit PMW=P1^2; //kong
int CYCLE,PWM_ON,count;
void initial() //變數初始化程序
{
CYCLE=20;
PWM_ON=0;
count=0;
}
void DelayMs(unsigned char z) //延時程序
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void nit_Timer0(void) //中斷初始化程序
{
TMOD=0x01;
TH0=(65536-2000)/256;//這是等於20ms
TL0=(65536-2000)%256;
EA=1;
ET0=1;
TR0=1;
}
void Timer0_isr(void) interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
if(count==PWM_ON)//如果定時等於on的時間說明作用時間結束,輸出低電平
//如果stop信號沒有得到的話,那麼可以得到,初值count=0,PWM_ON=0;PMW=0;
//count++ =>count=1;PWM_ON沒有改變還是等於0,所以不管count增加多少等式都不會成立。
{
PMW=0;
}
else if(count==CYCLE)//反之低電平時間結束後返回高電平
//當count=20,CYCLE=20,所以這條語句成立
{
count=0;
if(PWM_ON!=0)//如果開啟時間是0保持原來狀態
//這條語句一直不成立,因為PWM_ON始終等於O
{
PMW=1;
}
}
count++;
}
/*void accelerate() //因為這個函數沒有調用到,所以不起作用
{
if(PWM_ON==CYCLE)
{
}
else
{
PWM_ON++;
}
}*/
mian()
{
initial();
Iint_Timer0();
while(1)
{
if(!stop)
{
DelayMs(5)//去抖動電路
if(!stop)
{
lone=1;
PWM_ON=0;
ltwo=1;
//PWM_ON=0;重復多餘
while(start)
{
RS=0;
}
}

}
}
}

閱讀全文

與修改單片機程序相關的資料

熱點內容
vue類似電腦文件夾展示 瀏覽:111
後備伺服器有什麼功效 瀏覽:268
連不上伺服器怎麼連 瀏覽:600
什麼構架的可以刷安卓系統 瀏覽:771
愛奇藝APP怎麼兌換CDK 瀏覽:994
程序員買4k顯示器還是2k顯示器 瀏覽:144
python多進程怎麼多窗口 瀏覽:818
電腦文件夾怎麼取消類別 瀏覽:47
cad拉線段命令 瀏覽:924
如何用電腦清理手機沒用的文件夾 瀏覽:100
儲存層次結構對程序員的意義 瀏覽:477
微信文件夾查看器 瀏覽:952
android視頻聊天開源 瀏覽:552
思科iso命令 瀏覽:944
手機網頁源碼里的視頻地址 瀏覽:681
哈利波特魔法覺醒要怎麼選伺服器 瀏覽:993
情感交友網站php 瀏覽:942
id下載不了app怎麼回事 瀏覽:996
有什麼好看的伺服器小說 瀏覽:293
程序員四級沒過有什麼影響 瀏覽:540