bit用法——单片机C语言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bit用法——单片机C语言相关的知识,希望对你有一定的参考价值。

KEIL.C中的bit,书上介绍的都很简略,如何应用,请附例详细说明。。

#include <stdio.h>
#include <absacc.h>
#include <./Atmel/at89x52.h>
extern void start_t2imer(void);
unsigned char scankey;
bit Timerout=0;
bit keypress;
#define KR0 P1_0
……
main()
……
while(1)
if(Timerout)
Timerout=0;
switch(fsm_key)
case FSM_INIT:
KR0=1;
KR1=1;
……



……
void time2()interrupt 5 //base 10 ms
TF2=0;
Timerout=1;
scankey=KBD_PORT;
if(scankey&0x0f)
keypress=1;

else
keypress=0;



……

以上部分程序中的
bit Timerout=0;
bit keypress;
是什么意思?以及后面的使用,请把程序解释清楚。谢谢。。

bit Timerout=0; 这里的bit本质上和char、int一样的(功能一样,类型不一样),char是8位,int是16位,bit是1位。
每个字节是8位,就可以包含8个bit,bit只有两个值,1和0.
bit Timerout=0;
bit keypress;
就是定义两个长度为1位的变量。
参考技术A BIT 定义一个位变量
用bit定义了keypress后,在后面的程序中变量keypress就只有 0 和 1 两个值
timerout也是一样
参考技术B bit就是定义位变量嘛,你要先看懂汇编,和单片机的内存结构,低128字节里面20~2fH,都是可以位寻址,你必须打好扎实的基础,这程序太简单,没什么好说的 参考技术C bit 在C51里面类似C语言的bool,bit定义的是一个位数据类型,只能为0或1两个值 参考技术D bit 位定义。
来自汇编。本回答被提问者采纳

c51编程中sbit 和bit有啥区别

如上。请高手回答,谢谢。

首先,bit和sbit都是C51扩展的变量类型
sbit一般用来定义特殊功能寄存器的位变量,以方便对寄存器的某位进行操作的
例如:sbit TXD=P3^0; 这样就定义了TXD为位变量,并且这个sbit量有确定的地址
bit则与一般的变量差不多,只不过bit定义的变量只有两种值存在0或是1
例如:bit p=0;编译器在编译过程将分配地址,所分配的地址是随机的
参考技术A sbit用于定义可位寻址字符型变量
bit应该是位变量
参考技术B http://zhidao.baidu.com/question/72536362.html 参考技术C sbit用于声明可位寻址字符型变量(例如特殊功能寄存器)的某些位。
bit用于声明位变量。本回答被提问者采纳

以上是关于bit用法——单片机C语言的主要内容,如果未能解决你的问题,请参考以下文章

位变量bit和sbit有啥用?

单片机c语言程序设计中,用关键字bit定义单片机的端口.对吗

求大神整理c语言指令符号及用法大全。

c语言中bit和sbit的区别哪些

c 语言中 bit与sbit的区别

c语言中的颜色设置语句详解