全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

C程序问题

[复制链接]
3587 1

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

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

x
学习板上的频率计程序,红色不太懂。。。
大家帮忙说一下这是什么结构,干什么的??有这方面程序资料也可以给我发邮箱。。。
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);
}
}

举报

回复

1 个评论

永登***  新手上路  发表于 2013-5-31 23:09:53  | 显示全部楼层
组合式数据结构之一,这个有的地方称作共用体,有的地方称为联合体,反正不管那么多,跟结构体相似,理解的时候,想象成数组就好想明白了
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表