导航:首页 > 编程语言 > 单片机二进制怎么编程

单片机二进制怎么编程

发布时间:2022-05-10 03:45:41

单片机怎么用二进制编程

学过汇编没有?好像是MOVE P1,0FDH ,然后move可以查出代表的二进制命令是什么,P1可以查到代表的二进制地址,0FDH 也可以写成二进制格式,然后就上面那句话就变成三个 二进制的代码了。不知道把这些代码写成二进制文件烧进去行不行,没试过,嘿嘿。

⑵ 请问怎么用51单片机编程将2进制数转化为ASCII码,并且在1602上显示出来

如果是ascii码表内的符号值,那么ascii值本身就可以认为是
16进制的(因为进制只是给人看的,单片机只有2进制,没有ascii

hex
之分),但如果是hex值,经过ascii发送后,需要接收解出数值,那么可以用这个函数:
uchar
ascii_tohex(uchar
ascii_data)
//ascii

hex
函数
{
uchar
hex_data=0;
//定义
hex变量存储转换结果
if(ascii_data>='0'
&&
ascii_data<='9')
hex_data=ascii_data-'0';
//若
转换内容为
字符'0-9',则转成对应数字0-9
else
if(ascii_data>='a'
&&
ascii_data<='f')
hex_data=ascii_data-'a'+10;
//若
转换内容为
字符'a-f',则转成数字10-15
else
if(ascii_data>='a'
&&
ascii_data<='f')
hex_data=ascii_data-'a'+10;
//若
转换内容为
字符'a-f',则转成数字10-15
return
hex_data;
//返回转换结果,非以上字符,不在hex(0-f)范围内,默认0
}//

⑶ 51单片机的编程问题

1:C51编译器如何区分位地址和字节地址
是靠预定义实现的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者声明了P0端口地址位于0x80,后者说明了P0端口的bit0,即P0.0位于位地址空间0x80处。这2个0x80具有完全不同的含义,靠关键字sfr和sbit来区别。这样当程序被编译时,编译器会依此编译成相应的汇编语言。例如:

C51语句: P0 = 1;

P0声明为sfr,因此编译成:mov 80h,01h,将把0x01数据送入0x80单元,由于0x80单元物理上对应P0端口,因此,P0.0脚将输出高电平(其实是呈现高阻态,P0口独有的),其他.1-.7脚输出低电平。

C51语句: P0_0 = 1;

P0_0声明为sbit,因此编译成:setb 80h,这将把位地址空间的0x80地址的bit的值置1。这个位正是P0口的bit0,执行后,P0.0将输出高阻态。而P0.1-.7不会变化。

2:C51为什么要嵌套汇编
51单片机一个显着优点就是指令执行时间固定,因此可以适应时序要求严格的场合。例如符合ISO7816协议的cpu卡的读写,对时序要求比较严格。其实就是用io脚做出来的同步半双工串口。支持cpu卡的程序一般比较庞大,需要用c51来组织,但是由于c编译的不确定性,必须把底层程序封装成汇编语言模块嵌入到工程中。这就带来几个问题:如何声明函数、参数如何传递等。限于篇幅,不能说得很细。下面举例:

汇编程序单独保存一个文件,加入到工程中,函数如下:

_proc_a:

mov a, r7

inc a

mov r7, a

ret

用c语言在.h文件中声明: extern unsigned char proc_a(unsigned char val);

调用时形如: retvalue = proc_a(0x11);

说明:

a:汇编程序如果带参数,则需要在汇编程序前多加一个下划线。而声明它的地方不用加(伟福编译器这么要求的)。

b:函数的形参中第一参数用R7传递,函数返回值用R7返回,这是C51的通用规范。其他参数都有相应规定。函数可以返回一个位,用psw的c位返回。c:上面的语句,执行顺序是把0x11给R7,然后跳转子程序,子程序将它加1后送回。

d:函数跳转到汇编程序时,本区的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考虑调用后是否要恢复这些常规资源。上例中,A的值被函数使用了,编程者不必恢复调用前的值。

⑷ 怎样给单片机编程

看你用的是什么类型的单片机,一般来说51系列的是入门级的也很好用,资料很多。你把编的程序经过编译后,形成一个最终的二进制文件,然后利用编程器写入单片机芯片中,然后把写了程序的芯片安装或焊接在电路中进行测试,最好的办法是用一些学习板或开发测试板,因为那样可以免去焊来焊去之苦。
当然你用STC(宏晶)片子,也可以事先做好电路,然后用STC下载线把你编制的程序写到芯片中。
另外,对于单片机技术,你不仅会编程,还要会电路设计,因为不同的电路设计有不同的程序与之对应,单片机编程与电路设计是分不开的。

⑸ 单片机中二进制怎么表示

单片机编程 汇编中 十进制 后面加D ,十六进制后边加H, 二进制后面加B。 比如 10进制 35D, 16进制 23H, 二进制 0010 0011B.
c语言中 十进制 不加前缀, 十六进制前边加 0x , 8进制前边加0 , 二进制不能直接表示(比较麻烦), 如 10进制 15 , 16进制 0x25 , 8进制 025

⑹ 单片机怎么处理一个多位的二进制数据,怎么存储呢。我举例说明。

你好!
8位的单片机,long型变量也只有32位,你说是一次收到一个bit的数据,共40bit的数据?每8个bit存为一个byte,
共折在五个byte不就存下了么
仅代表个人观点,不喜勿喷,谢谢。

⑺ 单片机十进制转二进制的程序

#include<stdio.h>
#define MAX 32
int main(void)
{
int i=0,n,a[MAX];
printf("请输入一个十进制整数:\n");
scanf("%d",&n);
while (n>0) //循环过程的始终,判断n是否能被2除尽
{
a[i] = n%2; //用数组存储每次除以2之后的余数,即断定奇偶性,对应二进制位上数值
i = i+1;
n = n/2;
}
printf("十进制整数转换为二进制数是:\n");
for(; i > 0; i--)
printf("%d",a[i-1]);
printf("\n");
return 0;
}

⑻ 8051单片机编程时,怎么把二进制数变成十进制数

这个就是16进制转10进制。
看你的数据范围了。
只有一个字节的话,最简单就是 循环减10。
多字节的话,减起来就太慢了。
可以用位权来加。移位判断,是1就加,0不加,第0位加1,第1位加2,第3位4,这样。

⑼ 单片机如何烧录二进制的机器代码

一是用编程器,二是有在线编程功能的如STC12系列,AVR单片机等等可以用相应的下载软件直接在线编程。

⑽ 单片机二进制数怎么用数组表示

  1. 十六进制表示即可(BM1,BM2,BM3,BM4,BM5,BM6,BM7,BM8),如果BM1是低位,BM8是高位,只用6个位,那么1100 0000 = 0xC0 等等等等

  2. 把要用的16进制写到数组里面 unsigned char arr[]={0xC0, 0xE0};要写多少随你自己了

  3. 两个端口比较麻烦,例如做一个函数,可以输入数组参数,把参数分别赋值给P4,P2

阅读全文

与单片机二进制怎么编程相关的资料

热点内容
如何判断服务器有没有带宽 浏览:41
天正建筑批量删除命令 浏览:94
cad最下面的一排命令都什么意思 浏览:456
pythonimportcpp 浏览:850
W10的系统怎么给U盘加密 浏览:370
华为手机代码编程教学入门 浏览:762
和彩云没会员怎样解压 浏览:634
androidimageview保存 浏览:387
新买店铺什么服务器 浏览:883
文件夹能直接刻录吗 浏览:493
androidxmpp删除好友 浏览:969
javac哪个前景好 浏览:428
中华英才网app为什么不能搜索了 浏览:660
服务器域名是什么意思 浏览:52
Linux导出mysql命令 浏览:159
无诈建邺是什么app 浏览:228
python中的双色球 浏览:167
python解释器里如何换行 浏览:412
python编写格式 浏览:577
用python做出来的软件 浏览:470