c语言-关于C语言编译C51单片机程序的一点疑问

问题描述

关于C语言编译C51单片机程序的一点疑问
1.为什么两段不相干的代码会互相影响
在主程序里有一段点亮发光二极管的代码,和一段计数器计数并在数码管上显示的代码。同时工作时,二极管正常点亮,数码管几秒才点亮一回,而且十位显示是闪烁一下就不显示了
2.数码管显示时,位选和段选顺序不能改变吗?
按照书上的方法是先段选再位选,但是点亮的数码管是本来不应该点亮的,段选和位选顺序换了之后就能正常显示了

解决方案

问题1)你所谓的同时工作是指led亮的同时数码管也在显示,是这样的吗?单片机跑的程序都是单线程的,所以函数可能会受到中断的影响
问题2)理论上,位选和段选是不要求顺序的,如果交换顺序会出现不一样的效果,说明你的程序写的有问题,根据你说的现象,我认为你段选和位选没设置好

解决方案二:
51单片机C语言程序(二)定…
51单片机 Keil C 延时程序
51单片机 Keil C 延时程序的简单研究

时间: 2025-01-01 11:16:52

c语言-关于C语言编译C51单片机程序的一点疑问的相关文章

语言-用C51编写单片机程序实现10以内的加减乘除的简易计算器

问题描述 用C51编写单片机程序实现10以内的加减乘除的简易计算器 5C 运行80C51单片机C51语言编写程序,在51实验小系统上实现"十以内的简易计算器",即:定义51实验小系统上的按键分别为0-9数字键.'+'."-""*""/"'='.退格等功能键:识别相关按键,按照十以内加法的正确逻辑在数码管上显示按键对应的信息,并完成加法运算,在数码管上显示加法结果.实验内容两个层次--层次一:加法的结果在十以内:层次二:两个加数

单片机编程 keil-关于c语言写的单片机程序

问题描述 关于c语言写的单片机程序 if(k2==0&&flg_start==1) { if(deng==0xfe||deng==0xfd) flg_zy=0; if(YDX==YD&&k2==0)//这里运行不是很流畅,到了后面的程序运行不起来 Mode=1; else if(YDX==TD&&k2==0) Mode=2; else if(YDX==SD&&k2==0) Mode=3; while(k2==0); } ... if(flg_

推荐一个算法编程学习中文社区-51NOD【算法分级,支持多语言,可在线编译】

    最近偶尔发现一个算法编程学习的论坛,刚开始有点好奇,也只是注册了一下.最近有时间好好研究了一下,的确非常赞,所以推荐给大家.功能和介绍看下面介绍吧.首页的标题很给劲,很纯粹的Coding社区....虽然目前人气可能一般,但这里面题目和资源还是比较丰富的,希望给初学者一个帮助. 本文原文地址:[推荐]一个算法编程学习中文社区-51NOD[算法分级,支持多语言,可在线编译] 1.51NOD论坛介绍     该论坛网址:http://www.51nod.com/index.html     论

关于c语言的指针的编译错误

问题描述 关于c语言的指针的编译错误 #include<stdio.h>#include<string.h>void f(char *p1char *p2){int k=3;char *p4*p5;p4=p1;p5=p4+k-1;for(;p1<p4+k-1;p1++);for(;*p2!='';p2++){ *p1=*p2; p1++;}for(;*p5!='';p5++){ *p1=*p5; p1++;}*p1='';}main(){char str1[100]str2[

图片-C语言的递归算法,编译为什么会出现这样的结果

问题描述 C语言的递归算法,编译为什么会出现这样的结果 解决方案 首先你这不是递归算法,递归算法最基本的必须运算过程中直接或者间接的调用函数本身. 你的这个为题应该是 scanf() 函数的用法问题,去掉scanf()函数中除了 %d 以外的字符应该就没有问题了. scanf()函数把从键盘读入的数存入指定的变量中,在你的程序中就是读入的数字放入整型变量n中,你的scanf()函数中除了有%d格式控制符外,还有一堆字符串,肯定是不对的.前面的格式化控制符,确定你要从键盘读入的数据的类型. 解决方

c语言-C语言的递归算法,编译时会出现图中的数值,无论输什么数都是这个求和值

问题描述 C语言的递归算法,编译时会出现图中的数值,无论输什么数都是这个求和值 解决方案 首先这并不叫递归,递归是自己调用自己的意思. 这个程序的错误在于scanf格式说明里面不能有汉字 换成 scanf("%d",&n); 解决方案二: 你的程序首先没有用递归,其次scanf不要/n 解决方案三: 你这是一个循环程序, 另外你在你在要输入的数值前面输入和 %d 符号前面一样的串之后,输入数值再敲回车就可以了.不然你读到的值永远是0.

Swift语言指南(一)--语言基础之常量和变量

原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合

c语言与c++语言之间的相互转化

问题描述 c语言与c++语言之间的相互转化 struct student*p0 scanf("%s",p0->num) scanf("%s",&p0->name) 解决方案 C++也能兼容C,直接编译看有没有什么语法错误 解决方案二: 对的,C++编译器本来就支持几乎所有C语法 你为何还需要改 C --> C++ #include scanf("%s",p0->num); --> std::cin >&

c语言基础-c语言新手,请问我这个程序有问题吗?

问题描述 c语言新手,请问我这个程序有问题吗? #include int main(void) { char ch; printf("Please enter a character.n"); scanf("%c",&ch); printf("The code for %c is %d.n",ch,ch); return 0; } 为什么我输入字符时,按回车,屏幕并没有出现打印的字符串,光标移到下一行的开头? 解决方案 char ch;