導航:首頁 > 操作系統 > 單片機程序翻譯

單片機程序翻譯

發布時間:2022-09-21 08:35:27

單片機程序翻譯

這個程序應該配有電路圖!!!!!

ORG 0000H (表示把下一條指令放在以0000H這個地址開始的的存儲空間ROM里,也就是把SJMP START這條指令存在0000H,0001H里,SJMP START長度是2個位元組!!在使用中要注意SJMP的轉移范圍。ORG是偽指令,單片機不運行,它不產生機器碼,是為匯編也就是將匯編語言翻譯成機器碼時服務的。它告訴匯編軟體下條指令放在哪個存儲空間。匯編程序開頭都會有這句,因為單片機復位後,PC=0000H,也就是單片機復位後,程序都是從0000H開始執行的,因為單片機的0003H開始到002BH是中斷入口地址,所以我們在0000H~0002H處存儲跳轉指令,直接跳到主程序。)
SJMP START(程序跳轉到START處,SJMP的轉移范圍是當前PC的+127B~-128B)

ORG 0030H(將START開始的程序依次存在以0030H開始的存儲空間里)
START: MOV P3,#0FFH (P3口輸出高電平,因為沒電路圖,所以只能從後面的程序推斷:所有的燈滅!!也就是電路圖的燈的一端接電源,另一端接P3口。下面的程序以全滅處理(當然也可能所有燈亮,具體看電路圖是怎麼樣的))
MOV A,#0FEH (A置初值,只有最左邊或最右邊燈亮)
JNB P1.2,LOOP (判斷P1.2是否為0,為0跳轉到LOOP,推測接按鍵,按鍵按下就跳轉)
JNB P1.3,LOOP1 (同上)
JNB P1.4,LOOP2 (同上)
JNB P1.5,LOOP3 (同上)
SJMP START (跳轉回STRAT,上面這段程序的作用是不停的判斷有沒有哪個按鍵按下,有按鍵按下就跳轉去做相應的處理)

LOOP: MOV P3,A (P3=A,因為A剛已經置初值了,所以P3口的燈有一盞亮)
LCALL DEL (調用子程序,用來延遲,讓人眼可以看到燈亮)
JNB P1.3,LOOP1 (判斷P1.3是否為0,為0跳轉到LOOP1)
RL A (左移A)
SJMP LOOP (跳去執行LOOP)
LOOP1: MOV P3,#0FFH (P3口輸出高電平,也就是所有燈滅)
上面這段程序的作用是如果P1.2的按鍵有按下,那就讓等向左輪流亮,直到P1.3的按鍵按下才停止,並且把燈都關了。

JNB P1.4,LOOP2 (判斷P1.4是否為0,為0跳轉到LOOP2)
JNB P1.5,LOOP3 (判斷P1.5是否為0,為0跳轉到LOOP3)
SJMP LOOP1 (如果P1.4和1.5都不為0,繼續等待直到他們有一個為0,也就是
P1.4和1.5接的按鍵有被按下)

LOOP2: JNB P1.0,LOOP (判斷P1.0按鍵是否被按下,如果被按下跳往LOOP)
JNB P1.3,LOOP1 ( 同上)
JNB P1.5,LOOP3 ( 同上)
MOV P3,A (P3=A,因為A剛已經置初值了,所以P3口的燈有一盞亮)
LCALL DEL (調用子程序,用來延遲,讓人眼可以看到燈亮)
RL A (左移A)
SJMP LOOP2
上面這段程序的作用是如果P1.4的按鍵有按下,那就讓等向左輪流亮,直到P1.3或P1.5的按鍵按下跳轉

LOOP3: JNB P1.2,LOOP
JNB P1.3,LOOP1
JNB P1.4,LOOP2
MOV P3,A
LCALL DEL
RR A
SJMP LOOP3
上面這段程序的作用是如果P1.5的按鍵有按下,那就讓等向右輪流亮,直到P1.2,P1.3或P1.4的按鍵按下跳轉

DEL: MOV R5,#02H
DEL1: MOV R6,#0F0H
DEL2: MOV R7,#0F0H
DEL3: DJNZ R7, DEL3
DJNZ R6, DEL2
DJNZ R5, DEL1
上面這段是延時程序(((15*16*2+3)*15*16+3)*2+1)機器周期
RET (延遲程序返回)
END (告訴匯編軟體,程序到此結束,同ORG一樣,單片機不執行這句)

有錯請指正!!!!

② 幫翻譯單片機C語言程序

#include<reg51.h>//51單片機頭文件
#include<stdio.h>//標准輸入輸出頭文件

unsignedcharspeed=5;//定義一個字元變數,並賦值為5
//(想知道5代表什麼可以查ASCII碼,也可以當數字用)
unsignedcharrec_buf[5];//定義一個可以存5個字元的數組
unsignedcharrec_idx=0;//定義一個字元變數,並賦值為0;

charputchar(charc)//實現一個名為putchar的方法,傳入一個字元,返回一個字元
{//{}括起來的是方法體,代表這裡面的內容屬於這個方法的
ES=0;//ES應該是一個寄存器吧,這里是把裡面清0,單片機我懂不多
SBUF=c;//把傳入的字元寫到SBUF寄存器,
while(TI==0);//當TI寄存器里值非0時繼續,這里是一個條件等待
TI=0;//把TI寄存器清0重置
ES=1;//向ES寄存器寫入1
return0;//返回0,結束本方法
}

voiddelay100ms(unsignedcharn)//定義一個無返回值的方法,並需要傳入一個字元
{//char字元型是可以當成數字來用的
unsignedchari,j;//定義兩個字元變數
TMOD=0x20;//把寄存器置為00100000狀態
for(j=0;j<n;++j)//作n(n是方法傳入的字元)次循環
{//{}裡面的東內容都進行n次循環
for(i=0;i<20;i++)//作20次循環,因為他在n次循環內,實際上是n乘以20次
{//外層進行1次,這里就這進行20次
THO=0x63;//把TH0寄存器置為01100011狀態
TL0=0x18;//把TLO寄存器置為00010100狀態
TRO=1;//把TRO寄存器置為00000001狀態
while(!TF0);//當TFO寄存器不為0時繼續
TF0=0;//把TFO重置為0
}
}
}

voidinit_com()//一個無返回值,也不需要傳入值的方法
{
TMOD=0x20;//TMOD寄存器設為00100000狀態
TH1=0xfd;//TH1寄存器設為11111101狀態
TL1=0xfd;//TL1寄存器設為11111101狀態
SM0=0;//SM0寄存器設為00000000狀態
SM1=1;//SM1寄存器設為00000001狀態
REN=1;//REN寄存器設為00000001狀態
EA=1;//EA寄存器設為00000001狀態
TR1=1;//TR1寄存器設為00000001狀態
ES=1;//ES寄存器設為00000001狀態
}

voidmain()
{
unsignedcharlsd_dat,i,j;//定義四個字元變數
charbuf[15];//定義一個可以存放15個字元的字元數組

i=0;//給變數i賦值為數字0
init_com();//執行上面定義過的init_com()方法;

while(1)//一個死循環,不斷的執行後面{}里的代碼
{
delay100ms(speed);//執行前面定義過的voiddelay100ms(unsignedcharn)方法
//首次執行時,speed是開始時定義的5
lsd_dat=0x01<<i;//變數lsd_dat賦值為1,也就是二進制的00000001
P1=lsd_dat;//把P1寄存器置為lsd_dat的值的二進制狀態

buf[0]='D';//把buf字元數組的首個值賦值為字元D,ascii碼為68
//等同於十進制數字68,二進制01001000
for(j=0;j<8;++j)//進行8次循環,每次循環j的值加1
buf[j+1]='0'+((lsd_dat&(0x01<<j))?1:0);//這段有點麻煩
//給buf數組的第j+1個存儲單元賦值,這個值是不確定的
//如果(lsd_dat&(0x01<<j))的運算結果不是0
//那麼他就等於『O'+1,否則就等於『0』+0;
//這里,我不知道『0』是字母o的大寫,還是數字0,應該是數字0
//下面說(lsd_dat&(0x01<<j))的運算
//lsd_dat就是上面定義的變數,他第一次執行時的值是00000001
//他會不會變取決與以後的代碼有沒有改變他
//(0x01<<j)這個作用是,把00000001向左移動j個位,右邊補0
//比如說j的值是2,就是左移兩位,那麼(0x01<<j)的值就是00000100
//j是每次循環都在變,所以這個值也在變
//現在我們就當j的值運行到等於2的時候來看(lsd_dat&(0x01<<j))
//可以看成(0x01&0x04)這是一個與運算,結果看下面
//0x0100000001
//0x0400000100
//&00000000結果就是0
//j=2的話,((lsd_dat&(0x01<<j))?1:0)=0;
//'0'是數字的話,值是十進制48,
//'0'+((lsd_dat&(0x01<<j))?1:0)=48,還是字元『0』
//也就是說((lsd_dat&(0x01<<j))?1:0)的值,不是0,就是1
//那麼,'0'+((lsd_dat&(0x01<<j))?1:0)他的值
//不是48,就是49,也就是字元面的'0'或者『1』,
buf[9]=' ';//buf字元數組的第10個存儲空間賦值為換行符『 』
buf[10]=' ';//buf字元數組的第11個存儲空間賦值為換行符『 』
buf[11]=0;//buf字元數組的第10個存儲空間賦值為0

printf(buf);//輸出字元數組
++i;//i的值自增1
if(i>=8)//如果i大於或者等於8
i=0;//把i重置為0
}
}

voides()interrupt4//定義一個給51單片機發送數據的方法
{
unsignedchardat;//定義一個字元變數
if(RI)//如果RI寄存器非空,執行後面{}裡面的內容
{
RI=0;//把RI寄存器清空
dat=SBUF;//把SBUF寄存器的值賦給dat變數
SBUF=dat;//再把SBUF寄存器設置成dat變數表示的內容
while(TI==0);//等待到TI寄存器非空的時候繼續下面的代碼
TI=0;//把TI寄存器重置清空(時間有限,簡單說了)
if(dat=='L'//如果dat變數的值等與字元『L』,執行後面{}內的代碼
{
rec_idx=0;//把rec_idx變數賦值為0(此處不是字元『0』,而是內碼);
rec_buf[rec_idx++]=dat;//給數組rec_buf[0]賦值為dat變數的值,
//並且rec_idx的值自增1
}
elseif(rec_idx>0)//如果上面那個條件不成立,並且rec_idx大於0,
//則執行後面{}里的內容
{
rec_buf[rec_idx++]=dat;//給數組rec_buf的第rec_idx個賦值為dat變數的值,
//並且rec_idx的值自增1
if(dat>'0'&&dat<='9')//如果dat大於『0』(48)並且小於等於『9』(57)
//則執行下條代碼,否則跳過下行代碼
speed=10-(dat-'0');//給變數speed賦值為10-(dat-48)
rec_idx=0;//給變數rec_idx賦值為0
}
}
}


看在這么精細,字又多的份上,分給我吧,雖然,我也是半瓶水,應該這些是沒錯的。現在時間都0:58了

③ 單片機中的程序 每句翻譯對應的意思 我是菜鳥 高手幫忙翻譯下 萬分感謝!!!

LINE EQU 30H //相當於宏定義 LINE=30H
ROW EQU 31H //ROW=31H
VAL EQU 32H //VAL=32H
ORG 00H //程序入口地址
SJMP START //跳到START處
ORG 0BH //定義定時器0的中斷地址入口
LJMP INT_T0 //跳到定時器0的服務程序入口INT_T0處
START: MOV P0,#00H //START標號程序的入口處,P0=0;
MOV TMOD,#01H //TMOD=01H,定義定時器0的工作方式為1
LSCAN: MOV P3,#0F0H //LSCAN標號程序的入口處,P0=0F0H
L1: JNB P3.0,L2 //L1標號程序的入口處,如果P3=0,則跳到L2標號處
LCALL DELAY //調用DELAY函數
JNB P3.0,L2 //如果P3=0,則跳到L2標號處
MOV LINE,#00H //將LINE指向的地址清零,在這里即將地址30H處的內存清零
LJMP RSCAN //長無條件跳轉到RSCAN
L2: JNB P3.1,L3 //L2標號程序的入口處, 如果P3.1=0,則跳到L3標號處
LCALL DELAY //長調用函數DELAY
JNB P3.1,L3 //如果P3.1=0,則跳到L3標號處
MOV LINE,#01H //將LINE指向的地址的內存賦值為1,在這里即將地址30H處的內存賦值為1
LJMP RSCAN //長無條件跳轉到RSCAN
L3: JNB P3.2,L4 //L3程序標號入口處,如果P3.2=0,則跳到標號L4處
LCALL DELAY //長調用函數DELAY
JNB P3.2,L4 //如果P3.2=0,則跳到標號L4處
MOV LINE,#02H //將LINE指向的地址的內存賦值為2,在這里即將地址30H處的內存賦值為2
LJMP RSCAN //長無條件跳轉到RSCAN標號處
L4: JNB P3.3,L1 //L4標號程序入口處,如果P3.3=0,則跳到L1標號處
LCALL DELAY //長高用函數DELAY
JNB P3.3,L1 //如果P3.3=0,則跳到L1標號處
MOV LINE,#03H //將LINE指向的地址的內存賦值為3,在這里即將地址30H處的內存賦值為3
RSCAN: MOV P3,#0FH //RSCAN程序標號入口處,P3=0FH
C1: JNB P3.4,C2 //C1程序標號入口處,如果P3.4=0,則跳到C2標號處
MOV ROW,#00H //將ROW指向的地址的內存賦值為0,在這里即將地址31處的內存賦值為0
LJMP CALCU //長無條件跳到CALCU標號處
C2: JNB P3.5,C3 //C2程序標號入口處,如果P3.5=0,則跳到C3標號處
MOV ROW,#01H //將ROW指向的地址的內存賦值為1,在這里即將地址31處的內存賦值為1
LJMP CALCU //長無條件跳到CALCU處
C3: JNB P3.6,C4 //C3程序標號入口處,如果P3.6=0,則跳到C4標號處
MOV ROW,#02H //將ROW指向的地址的內存賦值為2,在這里即將地址31處的內存賦值為2
LJMP CALCU //長無條件跳到CALCU處
C4: JNB P3.7,C1//C4程序標號入口處,如果P3.7=0,則跳到C1標號處
MOV ROW,#03H //將ROW指向的地址的內存賦值為3,在這里即將地址31處的內存賦值為3
CALCU: MOV A,LINE//CALCU程序標號入口處,A=LINE,在此,即A=30H,A指向地址30H處
MOV B,#04H //B=04H
MUL AB //A中的內容與B中的內容相乘
ADD A,ROW //A=A的內容+ROW中的內容
MOV VAL,A //並A中的內容放到VAL所指向的地址內存處,在此VAL為32H
MOV DPTR,#TABLE2 //將TABLE2的地址存到DPTR里
MOV B,#2 //B=2
MUL AB //A中的內容與B中的內容相乘
MOV R1,A //將A中的內容存到R1里
MOVC A,@A+DPTR //將A+DPTR的內容存到A中,在此表示取表值
MOV TH0,A //將A中的內容給定時器0的高位賦初值
INC R1 //R1自身加1
MOV A,R1 //將R1 的值賦給A
MOVC A,@A+DPTR //將A+DPTR的內容存到A中,在此表示取表值
MOV TL0,A //將A中的內容給定時器0的低位賦初值
MOV IE,#82H //設置中斷允許寄存器,在此,表示開總中斷EA,開定時器允許中斷ET0
SETB TR0 //將T0置1,在此表示啟動定時器T0
MOV A,VAL //將VAL的地址賦值給A
MOV DPTR,#TABLE1 //將TABLE1的地址存到DPTR里
MOVC A,@A+DPTR//將A+DPTR的內容存到A中,在此表示取表值
MOV P0,A //P0=A
W0: MOV A,P3 //W0程序標號入口處,將P3賦值給A
CJNE A,#0FH,W1//如果A不等於0FH,則跳到W1標號處
MOV P0,#00H //將P0賦值為0
CLR TR0 //將TR0清零,在此表示關閉定時器T0
LJMP LSCAN //長無條件跳到LSCAN標號處
W1: MOV A,P3 //W1程序標號入口處,將P3賦值給A
CJNE A,#0F0H,W2//如果A不等於0FH,則跳到W2標號處
MOV P0,#00H //將P0賦值為0
CLR TR0 //將TR0清零,在此表示關閉定時器T0
W2: SJMP W0 //W2程序標號入口處,短無條件跳到W0標號處
INT_T0: MOV DPTR,#TABLE2 //定時器0中斷的服務程序入口處,將TABLE2的地址存到DPTR里
MOV A,VAL //將VAL存到A中,在此VAL =32H
MOV B,#2 //將B賦值為2
MUL AB //A中的內容與B中的內容相乘
MOV R1,A //將A中的內容存放到R1中
MOVC A,@A+DPTR //將A+DPTR的內容存到A中,在此表示取表值
MOV TH0,A //將A中的內容存到TH0中,作為定時器T0的高位初值
INC R1 //R1自身加1
MOV A,R1 //將R1中的內容存放到A中
MOVC A,@A+DPTR //將A+DPTR的內容存到A中,在此表示取表值
MOV TL0,A//將A中的內容存到TH0中,作為定時器T0的低位初值
CPL P1.0 //將P1.0取反
RETI //中斷子函數返回標號
DELAY: MOV R6,#10 //DELAY函數入口處,R6=10
D1: MOV R7,#250 //D1程序標號入口處,R7=250
DJNZ R7,$ //R7自減1,一直在此循環到為0
DJNZ R6,D1 //R6自減1,如果不為0,則跳到D1標號處
RET 子函數返回標號
TABLE1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H //TABLE1地址處往下的地址中所放的數據
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
TABLE2: DW 64021,64103,64260,64400 //TABLE2地址處往下的地址中所放的數據
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 65058,65110,65157,65178

希望這有用

④ 求單片機程序翻譯

ORG 0000H // 表示程序從0000H這個單元開始執行

MOV 20H,#02H //表示,02H移到 20H這個單元,完了之後,20H中的內容就是 02H (20H)=02H

MOV 21H,#03H 這個同上 完了之後,21H中的內容就是 03H (21H)=03H

MOV A,20H //這個與上邊兩個不同,就是少了個# 所以表示的也不同,這個是把 20H中的內容移到A,上邊20H中的內容是 02H 所以,執行完後,(A)=02H

SWAP A //就是把A中的高位元組與低位元組交換,結果是 (A)= 20H (上邊A的內容已經是02H)

ADD A,21H //這個是把 21H中的內容 加上 A中的內容,結果放在A 上邊的(21H)=03H,(A)=
20H,所以,結果是(A)=23H

MOV 22H,A //這個是把A中的內容移到 22H單元中,執行完後,(22H)=23H,A中還是23H

END就是結束程序的意思

⑤ 單片機程序翻譯

程序太長了點,都注釋太費時了,其實也沒那麼難,你靜心看也應該能看懂的,1602液晶顯示串口接收到的數據這個功能。

⑥ 單片機英文翻譯

單片機翻譯:

1、abbr. SCM

2、misc. singlechip

詳細釋義:

一、SCM

釋義:

1、abbr. 供應鏈關系管理(Supply Chain Management);

2、單片機(Single Chip Micyoco)

例句:

1、SCM through the design of a control system.

通過單片機的設計,構成控制系統。

二、singlechip

讀音:英 [ˈsɪŋɡl tʃɪp] 美 [ˈsɪŋɡl tʃɪp]

釋義:單片機

短語:

1、singlechip microcomputer 單片機

2、flash singlechip flash單片機

3、51 singlechip 單片機

4、singlechip feedbsck 單片機反饋

5、singlechip distributed 分布式監控

6、lower singlechip 下位單片機

7、-singlechip 系列單片機

8、pic singlechip pic單片機

(6)單片機程序翻譯擴展閱讀

詞彙釋義

一、single

讀音:英 ['sɪŋg(ə)l] 美 ['sɪŋɡl]

釋義:

1、adj. 單一的;單身的;單程的

2、n. 一個;單打;單程票

3、vt. 選出

4、vi. 擊出一壘安打

短語:

1、every single [口語][加強語氣]每一個

2、single chip 單晶片

3、single crystal 單晶

4、single day 單日;光棍節

5、single room n. 單人房,單人間

6、single phase [電]單相的

7、single layer 單層

8、single cell 單細胞

9、single chip computer 單片計算機

10、every single day 每一天

二、chip

讀音:英 [tʃɪp] 美 [tʃɪp]

釋義:

1、n. 炸薯條(片);晶元,晶片;碎片,碎屑;缺口;籌碼;(足球的)挑球,(高爾夫球)短切球

2、v. 打缺,弄缺;鏟,鑿,削;短切(球),踢(高球);把(土豆等)切成小片(條)

短語:

1、tortilla chip 墨西哥玉米片 ; 玉米薯片

2、Chip Resistor 貼片電阻 ; 片狀電阻器 ; 片式電阻

3、Chip Tsao 陶傑

4、Neuron Chip 神經元晶元 ; 內置神經元微處理器

5、power chip 力晶 ; 力晶半導體 ; 力晶科技 ; 電源晶元

6、chip microprocessor [計] 單片微處理器 ; 單片微處理機 ; 晶元微處理機

7、chip mounter 貼片機 ; 貼裝機 ; 晶元安裝器

8、modem chip 燈解稻片 ; [電子] 數據機晶元 ; 數據機等化作用 ; 數據機晶片

9、Chocolate Chip 餅干內有碎片的巧克力 ; 巧克力屑 ; 巧克力豆 ; 實物為肉粉色

⑦ 簡單的單片機的匯編語言編程的程序翻譯

ORG
000H
//程序從內存地址000h開始執行
MOV
P1,#0FFH
//將P1,P3置高
MOV
P3,#0FFH
//如果P3沒有置高,讀取p3.0的值將會不準確
XH:
JB
P3.0,$
//判斷p3.0是否為低,若為高等待,為低繼續往下執行,也就是鍵盤是否按下
ACALL
DELAY
//調用延時子程序,鍵盤消抖
JB
P3.0,$
//再次判斷
JNB
P3.0,$
//判斷按鍵是否釋放
MOV
P1,#0FBH
//點亮p1.2接的燈
ACALL
DELAY
//延時
JB
P3.0,$
ACALL
DELAY
JB
P3.0,$
JNB
P3.0,$
MOV
P1,#0F3H
//點亮p1.3接的燈
ACALL
DELAY
JB
P3.0,$
ACALL
DELAY
JB
P3.0,$
JNB
P3.0,$
MOV
P1,#0E3H
//點亮p1.4接的燈
ACALL
DELAY
JB
P3.0,$
ACALL
DELAY
JB
P3.0,$
JNB
P3.0,$
MOV
P1,#0FFH
//熄滅算所有的燈
ACALL
DELAY
AJMP
XH
//跳轉到標號XH
NOP
NOP
//空語句,一個指令周期延時
NOP
NOP
DELAY:
MOV
R0,#080H
//延時子程序
D1:
MOV
R1,#0FAH
D2:
DJNZ
R1,D2
//r1為0,跳轉到下一條指令
DJNZ
R0,D1
RET
END

閱讀全文

與單片機程序翻譯相關的資料

熱點內容
rf3148編程器 瀏覽:505
浙江標准網路伺服器機櫃雲主機 瀏覽:587
設置網路的伺服器地址 瀏覽:600
java圖形界面設計 瀏覽:751
純前端項目怎麼部署到伺服器 瀏覽:538
瓜子臉程序員 瀏覽:505
如何保證伺服器優質 瀏覽:94
小微信aPP怎麼一下找不到了 瀏覽:299
演算法纂要學術價值 瀏覽:975
程序員你好是什麼意思 瀏覽:801
倩女幽魂老伺服器如何玩 瀏覽:561
電子鍾單片機課程設計實驗報告 瀏覽:999
看加密頻道 瀏覽:381
程序員算不算流水線工人 瀏覽:632
三星電視我的app怎麼卸載 瀏覽:44
簡述vi編譯器的基本操作 瀏覽:507
讓程序員選小號 瀏覽:91
加強數字貨幣國際信息編譯能力 瀏覽:584
購買的app會員怎麼退安卓手機 瀏覽:891
程序員的種類及名稱 瀏覽:295