首页 > 编程语言 >08_模块化编程

08_模块化编程

时间:2023-11-09 17:47:05浏览次数:41  
标签:P2 case 模块化 08 编程 unsigned Nixie break Delay

模块化编程

将多位数码管显示不同数字的代码模块化

模块化之前

#include <REGX52.H>

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};

void Delay(unsigned int xms)	//@12.000MHz
{
	unsigned char data i, j;
	
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

void Nixie(unsigned char Location,Number)
{
	switch(Location)
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=NixieTable[Number];
	Delay(1); //稳定显示,不然会暗
	P0=0x00; //消影
}

void main()
{
	while(1)
	{
		Nixie(1, 1);
		Nixie(2, 2);
		Nixie(3, 3);
	}
}

模块化之后

main.c

#include <REGX52.H>
#include "Delay.h"
#include "Nixie.h"

void main()
{
	while(1)
	{
		Nixie(1, 1);
		Nixie(2, 2);
		Nixie(3, 3);
	}
}

Delay.c

void Delay(unsigned int xms)	//@12.000MHz
{
	unsigned char data i, j;
	
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);
	
#endif

Nixie.c

#include <REGX52.H>
#include "Delay.h"

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};

void Nixie(unsigned char Location,Number)
{
	switch(Location)
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=NixieTable[Number];
	Delay(1); //稳定显示,不然会暗
	P0=0x00; //消影
}

Nixie.h

#ifndef __NIXIE_H__
#define __NIXIE_H__

void Nixie(unsigned char Location,Number);

#endif

标签:P2,case,模块化,08,编程,unsigned,Nixie,break,Delay
From: https://www.cnblogs.com/mzx233/p/17822390.html

相关文章

  • (十二)C#编程基础复习——break、continue、goto:跳出循环
    在使用循环语句时,并不是必须等待循环完成后才能退出循环,我们也可以主动退出循环,C#为我们提供了break、continue和goto三种方式来跳出循环:1、break它不仅可以用来终止switch语句,在循环语句中使用时还可以用来跳出循环,执行循环外的下一条语句。如果是在嵌套循环中使用,例如在内层的......
  • (十一)C#编程基础复习——foreach循环
    除了前面介绍的几种循环语句外,C#同样也支持foreach循环,使用foreach可以遍历数组或者集合对象中的每一个元素。foreach会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到foreach()里定义的变量中,直到所有元素都成功取出后退出循环。代码示例如下:int[]a=newin......
  • (十)C#编程基础复习——do while循环
    在C#中,dowhile循环同样可以多次迭代一部分程序,但它与我们前面学习的for循环和while循环不同,for循环和while循环会在循环开始之前先判断表达式的结果,只有表达式结果为真时才会开始循环,而dowhile循环会先执行一遍循环主体中的代码,然后再判断表达式的结果。也就是说,不论表达式的结......
  • 【Linux上机实验】新实验五 shell编程
    【前言】愿,所有相遇,都恰逢其时!愿,此刻心头,正满怀欣喜!---你好,朋友,欢迎你! ---对此篇博客中有任何问题和不懂的可以咨询QQ:27595909051.编写脚本,从键盘输入10个数,并计算这些数的和(用数组存放20个数)。1.输入visum.sh,创建一个名为"sum.sh"的文件......
  • 牛客[编程题] HJ29 字符串加解密
    HJ29 字符串加解密中等  通过率:25.47%  时间限制:1秒  空间限制:32M 描述对输入的字符串进行加解密,并输出。加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数......
  • 为什么java被称作是平台无关的编程语言,举个详细的例子
     Java被称为平台无关的编程语言主要是因为它的设计哲学:“编写一次,到处运行”(WriteOnce,RunAnywhere-WORA)。这种特性是由Java的运行时环境(JavaRuntimeEnvironment,JRE)和Java虚拟机(JavaVirtualMachine,JVM)实现的。我将详细解释这一概念,并提供一个具体的例子来说明......
  • 牛客[编程题] HJ27 查找兄弟单词
    HJ27 查找兄弟单词  描述定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。现在给定你n个单词,另外再......
  • Java-Script 编程
    Java-Script编程目录Java-Script编程一.Js概念1.1简介1.2语法结构二.变量使用2.1定义变量2.2定义常量三.数据类型3.1数值类型(number)3.2字符类型(string)3.3.字符类型常用方法3.4布尔值(boolean)3.5null与undefined3.6数组3.7数组常用的方法3.8运算符四.流程......
  • sql server2008禁用远程连接
    1.打开SQLServer配置管理器,双击左边SQLServer网络配置,点击TCP/IP协议,在协议一栏中,找到全部侦听,修改为否,然后点击IP地址,将IP地址为127.0.0.1(IPV4)或::1(IPV6)的已启用修改为是,其它的IP地址的已启用修改为否注意:如果要开启局域网远程连接,则找到内网ip地址,将已启用改为......
  • Linux文件编程(lseek函数和stat函数)
    (文章目录)前言本篇文章来讲解lseek函数和stat函数,lseek函数主要用来设置文件偏移量,stat函数主要用来获取文件属性。一、lseek函数lseek函数用于在打开的文件中移动文件指针的位置。它可以用于设置文件的读写位置或查找特定位置的数据。函数原型如下:#include<unistd.h>o......