/********函数声明********/ void write7279(unsigned cha,咨信网zixin.com.cn" /> /********函数声明********/ void wr"/>
收藏 分销(赏)

定时器c 语言程序.doc

上传人:xrp****65 文档编号:7439212 上传时间:2025-01-04 格式:DOC 页数:5 大小:39KB 下载积分:10 金币
下载 相关 举报
定时器c 语言程序.doc_第1页
第1页 / 共5页
定时器c 语言程序.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
定时器c 语言程序 #include "c8051f020.h" #include <intrins.h> /********函数声明********/ void write7279(unsigned char, unsigned char);//写入到HD7279 void Send7279Byte(unsigned char ch); //发送一个命令字 void Delay1us(unsigned char us) ; //延时1μ void Delay1ms(unsigned char T) ; //延时1ms void Timer0_Init (void); void SYSCLK_Init (void); //**** 变量及I/O口定义 ********* unsigned char data shi _at_ 0x30; //时 unsigned char data fen _at_ 0x31; //分 unsigned char data miao _at_ 0x32; //秒 unsigned char data zdjs _at_ 0x33; //中断计数 unsigned char bdata BZW _at_ 0x20; sbit BZW0=BZW^0; sbit CLK = P1^6; // HD7279 sbit DAT = P1^7; // HD7279 #define NOSELECT7279 P5 |= 0x80 //SPICS4(P57)=1 #define SELECT7279 P5 &= ~(0x80) //SPICS4(P57)=0 //***********延时N * 1μ*****************************// void Delay1us(unsigned char us) //延时1μ { while (us) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); --us; } } //*********发送一个命令字****************// void Send7279Byte(unsigned char ch) //发送一个命令字 { char i; SELECT7279; //置CS低电平 Delay1us(100); //延时50μ for (i=0;i<0x8;i++) { if (ch&0x80) //输出7位到HD7279A的DATA端 { DAT=1; } else { DAT=0; } CLK=1; //置CLK高电平 ch=ch<<1; //待发数据左移 Delay1us(20); //延时8μ CLK=0; //置CLK低电平 Delay1us(20); //延时50μ } DAT=0; //发送完毕,DATA端置低,返回 } /************* 显示时钟 ************/ void displaytime() //显示时钟 { Send7279Byte(0x85) ; Send7279Byte(shi/10) ; //显示 时的 十位 Send7279Byte(0x84) ; Send7279Byte(shi%10) ;//显示 时的 个位 Send7279Byte(0x83) ; Send7279Byte(fen/10) ; //显示 分的 十位 Send7279Byte(0x82) ; Send7279Byte(fen%10) ; //显示 分的 个位 Send7279Byte(0x81) ; Send7279Byte(miao/10); //显示 秒的 十位 Send7279Byte(0x80); Send7279Byte(miao%10); //显示 秒的 个位 } //*********单片机时钟初始化***********// void SYSCLK_Init (void) { int i; // delay counter OSCXCN = 0x65; // start external oscillator with // 18.432MHz crystal for (i=0; i < 256; i++) ; // Wait for osc. to start up while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle OSCICN = 0x88; // select external oscillator as SYSCLK // source and enable missing clock // detector } //***************//初始化IO口*************************// void PORT_Init (void) { XBR0 = 0x07; // Enable SMBus, SPI0, and UART0 XBR1= 0x02; //交叉开关允许 XBR2 = 0x40; // Enable crossbar and weak pull-ups } //***************定时器0初始化**************// void Timer0_Init (void) { // CKCON|=0x8; TMOD=0x01; //定时器0 工作方式1 //TR0 =0; TH0 =0x70; // set Timer0 to overflow in 1ms TL0 =0x00; TR0 =1; // START Timer0 IE =0x82; } //************* 定时器0中断 ************// void timer0() interrupt 1 //定时器0中断 { TH0=0x70; TL0=0x00; zdjs++; if(zdjs >=50) {BZW0=1; zdjs=0;miao = miao +1; } //是否到 1s 了? if(miao>=60) { miao =0; fen+=1; } if(fen>=60) { fen=0; shi+=1; } if( shi>=24){ shi=0; fen=0; miao=0;} } //************主程序****************************// void main (void) { WDTCN = 0xde; WDTCN = 0xad; //关看门狗 SYSCLK_Init (); //初始化时钟 Timer0_Init(); //初始化定时器 PORT_Init (); //初始化IO口 CPT1CN |= 0x80; //使能比较器1 REF0CN = 0x03; //使能片内参考电压 EA=1; //开中断 BZW0=0; shi= 22; fen = miao = zdjs =0x00; displaytime(); //显示时钟 BZW0=1; ET0=1; TR0=1; while(1) { if(BZW0==1) // { //{} displaytime(); //显示时钟 BZW0=0;} } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服