怎样把单片机的任意8个I0口定义成一个8位的字符型数据

作者&投稿:岳琪 (若有异议请与网页底部的电邮联系)
定义变量a的数据类型为无符号字符型,在stc51单片机中将占用多少个字符~

数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。
变量是用来存储值的所在处;它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。
所有变量都具有数据类型,以决定能够存储哪种数据。

他256个RAM首先堆栈占用一部分,其次,程序运算占用一部分,实际你可以用的也就2,30个,如果程序小,而且没有中断可能还能多点,也就是100多个吧。毕竟内部定义一个变量他就要占用一个到多个内存。而运算时A,B寄存器,还有别的运算都是需要R0-R7这些的,这些几乎不能用又去了8个。。所以51RAM不大。。省点用

确实写个子函数可以实现:但执行起来效率肯定很低,,还需一条一条执行,比用同一端口速度慢几十倍,有时候可能会影响刷新速度
如定义A B C D等为uchar型变量:
读取时
A=P3.0<<7
B=P3.5<<6
C=P1.2<<5
.......
DATA=A|B|C|D|E|F|G|DP
作为l输出时
P3.0=DATA|0X80
P3.5=DATA|0X40
.......

确实写个子函数可以实现:但执行起来效率肯定很低,,还需一条一条执行,比用同一端口速度慢几十倍,有时候可能会影响刷新速度
如定义A B C D等为uchar型变量:
读取时
A=P3.0<<7
B=P3.5<<6
C=P1.2<<5
.......
DATA=A|B|C|D|E|F|G|DP
作为l输出时
P3.0=DATA|0X80
P3.5=DATA|0X40
.......

加个子函数
每一位对应一个IO

如 :若第一位为0,P30=1,若第一位为1,P30=1;


单片机如何用两个按键控制8位输出的自加自减
很简单 比如你定义的数是AA,汇编的是这样写的:MAIN;JB P3.0 ,S1 MOV A, AA INC A MOV AA,A S1:JB P3.1 ,MAIN MOV A, AA DEC A MOV AA,A JMP MAIN C语言的 if(P3^0==0){ delay(50);if(P3^0==1){ aa++;if(aa>=10)aa=0;}} if(P3^1==0){ delay...

51单片机,怎样编程,让所有的数码管都显示8,给出详细编程,谢谢!_百度知...
让所有的数码管都显示8其实是最简单的,将所有位码都置为有效,段码送8的码就可以了,不需要扫描。比如:P0为段码,P2为位码 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV P0,#7FH MOV P2,#00H SJMP END

51单片机如何控制八个数码管,进行动态扫描
1=1;P0=0x5b;\/\/百位 P1_2=0;for(i=0;i<2;i++);P1_2=1;P0=0x4f;\/\/千位 P1_3=0;for(i=0;i<2;i++);P1_3=1;} } 这个是4位数码管,P0口接赋值端,P1口低四位接4个数码管的选通端,你要八个的话就把P1口的高四位再接到另外四个数码管的片选端,程序仿照就可以了 ...

一个十进制数 如何在单片机应用中取它的高8位和低8位 可不可以具体讲讲...
其实是很简单的。8位的单片机的数据的位数超过8位,那么单片机会将数据放在两个不同的位置,直接读相应的地址位就可以了。。

单片机C语言如何实现8个LED流水灯来回流动?
1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:

如何把单片机任意引脚转换成连续引脚?我用430f5529lp想和1602连,板上...
取出高5位给这高位引脚 : date1 = date&0xF8; \/\/取出高5位 比如 A0 口的高5位和数据口连接,那么在给数据口赋值的时候或上这个IO口其他位置本来应该有的电平赋值就行(比如其他三个IO口都需要高电平,那么 date1|0x03 后再赋值),再或者 8 个 IO口都不连续,拆开来一位一位赋...

单片机编程题,求大神解答,设某单片机系统采集的8个字节的数据放在内部...
40H单元!!!8

单片机的高八位和低八位,能不能用个简单的程序例子说明下用法_百度知 ...
最直接的例子,就是定时器初始化,比如:TMOD=0x01;\/\/定时器0设为工作方式1 TH0=(65536-50000)\/256;\/\/初值高八位赋值给TH0 TL0=(65536-50000)%256;\/\/初值低八位赋值给TL0

利用单片机外部中断控制8(D1~D8)个发光二极管实现如下功能。_百度知 ...
开放两个外部中断源,把两个按键分别接在外部中断信号输入端,中断方式设置为边沿触发方式。在中断服务子程序中,可以采取每次循环移动两位的方式来驱动外接LED

单片机c51程序,一个数字或字符是8位二进制数,如何把一个一个位提取出 ...
将bit Ubit[8]改为unsigned char Ubit[8]这样可以了

台州市18263997761: 怎样把单片机的任意8个I0口定义成一个8位的字符型数据 -
敞韩复方: 确实写个子函数可以实现:但执行起来效率肯定很低,,还需一条一条执行,比用同一端口速度慢几十倍,有时候可能会影响刷新速度 如定义A B C D等为uchar型变量:读取时 A=P3.0B=P3.5C=P1.2.......DATA=A|B|C|D|E|F|G|DP 作为l输出时 P3.0=DATA|0X80 P3.5=DATA|0X40.......

台州市18263997761: 单片机中如何将不同端口的8个“io”口用c语言定义为1个端口? -
敞韩复方: 是采用 _Boot 来定义某一位.用C语言举例子如下: typedef struct{unsigned char Bit0 : 1;unsigned char Bit1 : 1;unsigned char Bit2 : 1;unsigned char Bit3 : 1;unsigned char Bit4 : 1;unsigned char Bit5 : 1;unsigned char Bit6 : 1;unsigned char Bit7 : 1;}SBitChar;

台州市18263997761: 单片机中如何将不同端口的8个IO口用C语言定义为1个端口
敞韩复方: 这样是不可以直接定义的,同1个端口是1个寄存器,只能写个进程或函数来处理.

台州市18263997761: 怎样把单片机的8个不同管脚定义成同一个IO口?? -
敞韩复方: 编译器已经帮你定义好了 例如 keil 安装目录 下 \C51\INC Atmel 的单片机 AT89C51、AT89S51 已经定义好AT89X51.H 头几行里是/*------------------------------------------------ Byte Registers------------------------------------------------*/ sfr P0 = 0x80; sfr SP = 0x...

台州市18263997761: 单片机中I/O口定义问题 -
敞韩复方: 两种方法,第一种,是按位读取,就是定义 sbit P3_0 = P3^0;sbit P3_1 = P3^1;一位一位的读取.第二种办法,你原来的是B = P1,你现在改成 B =( P1<<4)|(P3&0x0F);或者 B =( P3<<4)|(P1&0x0F);就行了,这两个语句其实是一样的,只是看你的连接和方便你编程而已.

台州市18263997761: 如何将51单片机的IO口设置为输入口? -
敞韩复方: 不需要设置,只需要定义好 P1口后,进行赋值就行. 例如: sfr P1 0x90;//定义P1口地址 sbit TEST_PIN P1^1; //定义P1口第1PIN的参数TEST_PIN = 1;//将P1^1赋高; P1 = 0X11;//给P1口赋值.如果是要将外部接口接到P1上,直接读取P1的值就行了. 多看看基本的.

台州市18263997761: 单片机i/o口怎么赋值 -
敞韩复方: 用未定义sbit如sbit led=P1^0;然后你就可以对led赋0或1值来控制P1^0口的电平了.led的话就像定义变量一样一个自定义的名称.

台州市18263997761: 如何将51单片机的IO口设置为输入口?
敞韩复方: MOV P1,#0FEH;那么P1.7-P1.1就是输入口,P1.0作为输出口.

台州市18263997761: 51单片机 -
敞韩复方: 对IO口进行定义.sbit:特殊功能位声明 P2是单片机内部已经定义的一个变量.表示单片机P2的8位IO.P2^3表示将P2口第三位名称声明为smgen.在程序中就可以用smegen代替P2口第三位.可以对这一位进行操作.

台州市18263997761: 关于给单片机定义I/O口的问题? -
敞韩复方: IO口有输入和输出两种状态,如此定义是为了方便阅读和理解,另外,很多单片机的IO口都有两个独立的输入、输出寄存器,一般记做P2IN、P2OUT,在51中如此定义是一个好习惯.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网