IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 变量在循环中丢失———中间变量的重要性 -> 正文阅读

[游戏开发]变量在循环中丢失———中间变量的重要性

变量在循环中丢失———中间变量的重要性

我们来看这样一个程序:

void SPI_byte_write(unsigned char tem)
{
	unsigned char i=0;
	for(i=0;i<8;i++)
	{
		if((tem&0x80)==0x80)
		MOSI = 1;
		else
		MOSI = 0;
		SCK = 1;
		delay_ms(100);
		tem = tem<<1;
		SCK = 0;
		delay_ms(100);
	}
	SCK = 0;
}

int main(void)
{
    unsigned char avr = 0x13;
	while(1)
	{
		SPI_byte_write(avr);
	}	
}

???????SPI_byte_write是io口模拟spi,写单个字符的函数。与时钟对应,从高到低把一个字符的8位用高低电平表达出来。
???????大家觉得这个程序有没有问题呢?
???????如果这个程序只运行一次,那么它是没有问题的,但是注意,这个SPI_byte_write在循环里,它能不能一直发送这个avr(0x13)呢?
???????答案是不能
???????按照我们的理解,这个函数应该是一直在发送avr,但是,当第二次进循环的时候,这时的avr已经不是0x13了,而是已经移位8次的0x00(移位后用0补齐)。所以,第一次之后的每一次,都是在发送0x00.

???????那么怎么解决这个问题呢?
答案就是在子函数中加一个中间变量。用该变量作为媒介,接收形参的值,之后对该中间变量进行按位与、移位等操作,主函数中的实参一直没被操作,还是原来的值,这样,每次发送的就是avr=0x13,变量的值便不会丢失。

void SPI_byte_write(unsigned char tem)
{
	unsigned char i=0,dat;
	dat = tem;
	for(i=0;i<8;i++)
	{
		if((dat&0x80)==0x80)
		MOSI = 1;
		else
		MOSI = 0;
		SCK = 1;
		delay_ms(100);
		dat = dat<<1;
		SCK = 0;
		delay_ms(100);
	}
	SCK = 0;
}

int main(void)
{
    unsigned char avr = 0x13;
	while(1)
	{
		SPI_byte_write(avr);
	}	
}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:53:21  更:2022-03-16 22:55:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 16:59:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码