① 单片机程序翻译
这个程序应该配有电路图!!!!!
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