51中的sbit型的全局变量

    51中sbit型的变量相当于是宏,因此在一个.c文件中定义了该宏,如果想在别的.c文件中使用,就需要重新定义。

也可以定义在头文件中,使用include指令包含定义的宏(sbit 变量)。

    下面是一个demo

my.c

#include "my.h"
//char bdata t1 _at_ 0x20;
void test()
{
	t1_7=0;
}

my.h

#ifndef __my_h__
#define __my_h__
#include <reg52.h>
char bdata t1 ;//_at_ 0x20;
sbit t2=P1^0;
sbit t1_7=t1^7;
extern void test();
#endif
test.c
#include <reg52.h>
#include "my.h"
main()
{
	while(1)
	{
		t2=~t2;
		t1_7=~t1_7;
		test();
	}
}



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个示例的LCD显示函数,用于显示一个取的全局变量的值。请注意,这是一个基本的示例,你可能需要根据你使用的具体LCD显示模块和驱动程序进行适当的修改。 ```c #include <reg51.h> // 假设要显示的全局变量为 globalVariable extern unsigned int globalVariable; // LCD引脚定义 sbit RS = P2^0; sbit EN = P2^1; sbit D4 = P2^2; sbit D5 = P2^3; sbit D6 = P2^4; sbit D7 = P2^5; // LCD命令和数据的宏定义 #define LCD_COMMAND 0 #define LCD_DATA 1 // 函数声明 void LCD_Init(); void LCD_SendCommand(unsigned char command); void LCD_SendData(unsigned char data); void LCD_SendString(char* str); void LCD_DisplayValue(unsigned int value); void delay() { unsigned char i, j; for (i = 0; i < 50; i++) { for (j = 0; j < 255; j++); } } void main() { LCD_Init(); // 初始化LCD while (1) { // 显示全局变量的值 LCD_DisplayValue(globalVariable); // 延时一段时间 delay(); } } // LCD初始化函数 void LCD_Init() { // 初始化引脚 RS = 0; EN = 0; D4 = 0; D5 = 0; D6 = 0; D7 = 0; // 初始化过程(可以根据具体LCD模块的要求修改) LCD_SendCommand(0x33); LCD_SendCommand(0x32); LCD_SendCommand(0x28); LCD_SendCommand(0x0C); LCD_SendCommand(0x06); LCD_SendCommand(0x01); } // 发送LCD命令或数据 void LCD_Send(unsigned char type, unsigned char value) { RS = type; // 设置RS引脚,0为命令,1为数据 D7 = (value & 0x80) >> 7; D6 = (value & 0x40) >> 6; D5 = (value & 0x20) >> 5; D4 = (value & 0x10) >> 4; EN = 1; // 设置EN引脚为高电平 delay(); // 稍作延时 EN = 0; // 设置EN引脚为低电平 D7 = (value & 0x08) >> 3; D6 = (value & 0x04) >> 2; D5 = (value & 0x02) >> 1; D4 = value & 0x01; EN = 1; // 设置EN引脚为高电平 delay(); // 稍作延时 EN = 0; // 设置EN引脚为低电平 } // 发送LCD命令 void LCD_SendCommand(unsigned char command) { LCD_Send(LCD_COMMAND, command); } // 发送LCD数据 void LCD_SendData(unsigned char data) { LCD_Send(LCD_DATA, data); } // 发送字符串到LCD void LCD_SendString(char* str) { while (*str) { LCD_SendData(*str); // 逐个发送字符串的字符 str++; } } // 显示数值到LCD void LCD_DisplayValue(unsigned int value) { char buffer[10]; sprintf(buffer, "%u", value); // 将数值转换为字符串 LCD_SendString(buffer); // 发送字符串到LCD显示 } ``` 这个示例代码使用了一个假设的全局变量`globalVariable`作为要显示的值。LCD引脚的定义根据具体的连接方式进行修改。`

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值