通过日期算星期的C51源程序

发布者:真诚的友谊最新更新时间:2016-11-07 来源: eefocus关键字:C51  源程序 手机看文章 扫描二维码
随时随地手机看文章
#include

#define uint unsigned int
#define uchar unsigned char

uchar code monthday[]={31,28,31,30,31,30,31,31,30,31,30,31};
 
uchar month_n_day(uint y,uchar m)  //算出某年某月有多少天
{
       if(m==2)
              return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
       else
              return(monthday[m-1]);
}

//************************************************
uchar week(uint y,uchar m,uchar d)    //计算某年某月某日是星期几(1900年开始)
{
    long nday=0;
    uint i;


    for (i=1900;i          nday =nday+(((i%4 == 0) && (i%100 != 0) || (i%400 == 0))? 366: 365);
    for (i=1;i          nday=nday+month_n_day(y,i);
    nday=nday+d;

    return(nday%7);
}

void main()
{
      uchar week1,week2,week3,week4;
      uint    aa1,aa2,aa3,aa4;
      aa1=10;
      aa1=aa1+2000;

      week1=week(aa1,11,2);      //week1为计算出来的星期几。
      while(1)
     {
            ;
     }
}

//说明:

         如计算2010年12月05日是星期几:假设 uchar   year,month,day;

                                                                       year=0x10;     //年份:10年
                                                                    month=0x12;     //月份:12月

                                                                        day=0x05;     //日:    05日 

则星期为:week1=week((year>>4)*10+(year&0x0f)+2000, (month>>4)*10+(month&0x0f),(day>>4)*10+(day&0x0f));                

                  注:此式只能计算2000年到2099年的星期。  

关键字:C51  源程序 引用地址:通过日期算星期的C51源程序

上一篇:C51编译警告: WARNING L1 WARNING L15
下一篇:C51 的重入问题 WARNING L15: MULTIPLE CALL TO SEGMENT

推荐阅读最新更新时间:2024-03-16 15:19

Proteus C51仿真学习板7——LCD1602
LCD1602作为最基础的字符型液晶显示屏,能过显示16x02=32个字符。那么时序的操作——读写是最主要的内容,今天就带大家一起读读时序。 在看时序图前,对LCD的引脚功能要了解,才能更好的读懂时序。 这里除了电源(1、2)、背光(15、16)、对比度(3)外,主要是控制信号和数据信号。 RS:数据/命令选择引脚,即=1写入数据,=0写入命令; RW:读写选择引脚,即=1读数据,=0写数据; EN:使能引脚;D0-D8:8位数据位。 所以:当RS=0,RW=0时,写入指令;当RS=1,RW=0时,写入数据;当RS=0,RW=1时,读忙信号;当RS=1,RW=1时,读数据。 这里忙信号主要是D7引脚,即D7=0
[单片机]
Proteus <font color='red'>C51</font>仿真学习板7——LCD1602
C51编程23-应用篇(HC 06蓝牙模块)
现在的手机,平板,笔记本电脑都会自带蓝牙。本文将会介绍51单片机使用HC 06 蓝牙模块实现手机与笔记本电脑的通讯。 HC 06 模块 购买HC 06模块后需要检测蓝牙模块是否是好的,使用串口线与HC 06 模块连接起来。并在电脑上的串口助手上发送“AT”,在串口助手上可以收到“OK”。 注:建议使用与本文一样的串口调试助手,或者让商家提供测试的串口助手程序。 硬件连接 HC 06 模块TXD 连接单片机的RXD,HC 06 模块RXD 连接单片机的TXD; 功能描述: 上位机在串口助手发送命令,通过上位机的蓝牙传输到单片机中,
[单片机]
<font color='red'>C51</font>编程23-应用篇(HC 06蓝牙模块)
51study实例-C51闹铃程序
#include atmelat89x52.h #include string.h #define comdir P3_2 #define wirespeaker P1_3 #define wiret0 T0 #define wiret1 T1 #define adr_delay1s 0x1086 #define adr_print10ms 0x1000 #define adr_print80ms 0x101A #define adr_screen_black 0x10BA #define adr_screen_clear 0x10CD #define adr_key_search 0X10EB #define adr_sou
[单片机]
Proteus仿真ARM7 LPC2101 AD转换器源程序
调试时首先观察待测电阻是否工作正常。在电阻的变化端插入电压探针,具体方式在 左边工具探针中选取电压探针(Voltage)运行仿真,点击电阻,观察探针电压是否在不断 变化。 调试流程 绘制 ADC 接口电路 1.在器件库中找到 ADC 转换芯片(ADC0801),如图连接 ADC0801 和总线信号。其中 ADC0801数据线连接数据总线最低字节(D0-D7),读写信号接总线读写信号(NRD,NWR)。其他信 号请按照下图进行连接。 2.片选信号 AD_CS 接译码电路输出(采用部分译码,对应地址为 0x03XXXXXX)。 3.连接模拟输入,在器件库找到可变电阻(POT-HG)。 完成 ADC0801 工作流程
[单片机]
Proteus仿真ARM7 LPC2101 AD转换器<font color='red'>源程序</font>
使用HD44780读写单片机的C51程序详细概述
下面我给大家介绍一个HD44780读写单片机c51程序 #include 《reg51.h》 #include 《intrins.h》 sbit GND_LCD=P1^7; sbit rs=P1^0; sbit rw=P1^1; sbit e=P1^2; unsigned char busy(void); void ctrl(unsigned char); void wd_h(unsigned char); void wd_l(unsigned char); unsigned char rd(void); void write(unsigned char); void init(void); void NOP(void); voi
[单片机]
有关C51的编程规范
简介:编程首要是要考虑程序的可行性,然后是可读性、可移植性、健壮性以及可测试性。这是总则。但是很多人忽略了可读性、可移植性和健壮性(可调试的方法可能歌不相同),这是不对的。 下面就来说说有关C51的编程规范问题。 1.当项目比较大时,最好分模块编程,一个模块一个程序,很方便修改,也便于重用和便于阅读。 2.每个文件的开头应该写明这个文件是哪个项目里的哪个模块,是在什么编译环境下编译的,编程者(/修改者)和编程日期,值得注意的是一定不要忘了编程日期,因为以后你再看文件时,会知道大概是什么时候编写的,有些什么功能,并且可能知道类似模块之间的差异(有时同一模块所用的资源不同,和单片机相连的方法也不同,或者只是在原有的模块上加以改
[单片机]
c51中定时器工作时如何使用T0脚输入脉冲信号?
嵌入式系统中,定时器是一种常用的设备,可以实现各种时间控制功能,如计时、计数、产生中断等。8051单片机中有两个定时器:T0和T1,其中T0定时器主要用于计时和计数操作,可以通过T0脚输入脉冲信号来控制定时器的工作。 T0脚是单片机的P3.4口,既可以作为普通的输入输出口,也可以作为T0定时器的外部输入引脚。当T0脚作为定时器的外部输入引脚时,可以通过输入的脉冲信号来控制定时器的计数。在使用T0脚输入脉冲信号时,需要采取一些措施来确保信号的稳定性和正确性。 首先,需要确定输入脉冲信号的频率。在使用T0脚输入脉冲信号时,需要将信号的频率与定时器的工作频率相匹配。具体来说,当定时器使用外部时钟源时,其工作频率为外部时钟源频率的一半,因
[单片机]
74HC595单片机C51驱动(源程序
#include reg52.h #define uchar unsigned char sbit HC595_CS=P1^0; //STcp ////锁存时钟-----74HC595 12# sbit HC595_CLK=P1^1; //SHcp ////移位时钟-----74HC595 11# sbit HC595_DAT=P1^2; //Ds ////数据---------74HC595 14# //延时子程序 void mDelay(uchar Delay) { uchar i; for(;Delay 0;Delay--) { f
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved