找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

C程序问题

[复制链接]
admin 发表于 2012-9-3 02:14:59 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
学习板上的频率计程序,红色不太懂。。。
大家帮忙说一下这是什么结构,干什么的??有这方面程序资料也可以给我发邮箱。。。
duckhead568@sina.com 谢谢[url][/url]
#include <reg51.h>
//定义位操作
sbit ls1=P0^2; //个位公共极
sbit ls2=P0^3; //十位公共极
sbit ls3=P0^4; //百位公共极
sbit ls4=P0^5; //千位公共极
#define Out P1 //数据输出端

unsigned char msec; //闸门

union{
unsigned char c[2];
unsigned int i;
}Freq;


unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳字表
unsigned char disbuf[]={0,0,0,0}; //显存

//----初始化------------------------------
void Init(void)
{
TMOD=0x15; //T0=16位外部计数器,T1=定时方式1
TH0=TL0=0; //计数器清0
TH1=0x3C;TL1=0xB0; //12.0000MHz@50mS
ET1=1;
}
//------闸门中断--------------------------
void Timer1(void) interrupt 3
{ TH1=0x3C;TL1=0xB0; //12.0000MHz@50mS
msec++; //50mS +1
if (msec>=20) //1秒闸门
{
TR0=0; //停止计数
EA=0;
Freq.c[0]=TH0;
Freq.c[1]=TL0;

TH0=TL0=0;
TH1=0x3C;TL1=0xB0;
msec=0; //开始下次计数
EA=1;
TR0=1; //开始计数
}
}
//延时----------------------------
Delay(unsigned int t)
{
while(t--);
}
//显示----------------------------
void Display(unsigned int mun)
{
unsigned char i=0,j;
do{
disbuf=mun%10; //将带进的mun分位到个十百千
i++;
}
while(mun/=10);

for(j=0;j<50;j++)
{
Out=tab[disbuf[0]];
ls1=0;
Delay(100);
ls1=1;

Out=tab[disbuf[1]];
ls2=0;
Delay(100);
ls2=1;

Out=tab[disbuf[2]];
ls3=0;
Delay(100);
ls3=1;

Out=tab[disbuf[3]];
ls4=0;
Delay(100);
ls4=1;
}
}
//---------------------------------------
main()
{
Init();
EA=1; //允许闸门中断
TR1=1; //开计时闸门
TR0=1; //开始计数
while(1)
{
if(Freq.i>9999) Freq.i=0;
Display(Freq.i);
}
}
永登一男. 发表于 2013-5-31 23:09:53 | 显示全部楼层
组合式数据结构之一,这个有的地方称作共用体,有的地方称为联合体,反正不管那么多,跟结构体相似,理解的时候,想象成数组就好想明白了
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 18:31 , Processed in 0.060505 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表