51 动态单片机数码管计数器时,T0计数器切换至T1后计时就变快了,是为什么

51单片机用T0计数器计算T1定时器的溢出次数,该如何实现?_百度知道
51单片机用T0计数器计算T1定时器的溢出次数,该如何实现?
不是C语言程序...
不是C语言程序
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
做而论道知道合伙人
采纳数:13302
获赞数:34728
用T0计数器计算...用T0计数器,只能计算外部引脚送来的脉冲个数。T1定时器每溢出一次,就通过导线,给 T0 引脚送去一个脉冲,即可。51单片机用T0计数器计算T1定时器的溢出次数,...这种计算的方法,电路、程序,都需要设计,并不实用。更简单的方法,还是有的。
zhxiufan知道合伙人
IT类认证行家
知道合伙人
采纳数:14315
获赞数:19979
国家科技进步奖
可以实现,T1溢出时输出一个脉冲给T0的输入就可以了。ORG&0000HLJMP&MAINORG&000BHLJMP&T0ISRORG&001BHLJMP&T1ISRORG&0030HMAIN:&&&&MOV&TMOD,#16H&&&&MOV&TH0,#0FFH&&&&MOV&TL0,#0FFH&&&&MOV&TH1,#HIGH()&&&&MOV&TL1,#LOW()&&&&SETB&TR0&&&&SETB&TR1&&&&SETB&ET0&&&&SETB&ET1&&&&SETB&EA&&&&CLR&A&&&&SJMP&$T0ISR:&&&&INC&A&&&&MOV&P0,A&&&&RETIT1ISR:&&&&CLR&TR1&&&&MOV&TH1,#HIGH()&&&&MOV&TL1,#LOW()&&&&&SETB&TR1&&&&RETI&&&&END
本回答被网友采纳
monengs知道合伙人
采纳数:62
获赞数:73
方法一:只开T1定时器中断,在T1定时器中断子程序中对(TH0 TL0)做加一运算。方法二:T1定时器模式,T0计数器模式,在T1定时器中断子程序中对某一固定引脚Px.x做“置1-清0-置1”操作,并将对应引脚连接在T0(P3.4)引脚。默认情况下T0中断比T1中断权限高,每次定时器T1溢出后,会在中断子程序内对引脚Px.x进行“置1-清0-置1”,过程中1到0的下降沿跳变会引起(TH0 TL0)加一;直到计数器T0溢出前的“置1-清0”时刻后“置1”时刻前,T0产生溢出中断,中断T1的中断子程序。比较:如果仅仅为了计算“T1定时器的溢出次数”的话,随便定义两个字节的“内部RAM数据存储器”就可以了,和方法一类似,在中断子程序中,对寄存器内数值加一,完全可以实现。用T0算T1太浪费资源了!定义“内部RAM数据存储器”计算“T1定时器的溢出次数”的程序:可以用Keil仿真以下,能看出效果的!&
本回答被提问者采纳
Cindere鞡知道合伙人
采纳数:821
获赞数:4211
汇编语言我不会,但是实现原理我懂。因为T0计数器的通过对某一IO口的电平跳变来计数的,而T1作为定时器又是内部的功能,要记录T1溢出率的话,可以在T1中断程序加一个操作IO产生一个电平跳变,然后接到T0计数口去。希望我的回答能帮助到你。
爱发明者知道合伙人
采纳数:24
获赞数:97
其他2条回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。 上传我的文档
 上传文档
 下载
 收藏
粉丝量:117
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
51单片机-lesson4数码管动态显示
下载积分:1500
内容提示:51单片机-lesson4数码管动态显示
文档格式:PPT|
浏览次数:0|
上传日期: 14:58:36|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1500 积分
下载此文档
该用户还上传了这些文档
51单片机-lesson4数码管动态显示
关注微信公众号基于单片机的频率计,C语言完成。测量方波信号,T0计数,T1计时,记够1秒的频率信号后给数码管显示,_百度知道
基于单片机的频率计,C语言完成。测量方波信号,T0计数,T1计时,记够1秒的频率信号后给数码管显示,
要求利用中断。。求程序设计。。...
要求利用中断。。求程序设计。。
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
你是我的菜o知道合伙人
你是我的菜o
擅长:暂未定制
3. 系统板上硬件连线(1). 把“单片机系统”区域中的P0.0-P0.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。(2). 把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。(3). 把“单片机系统”区域中的P3.4(T0)端子用导线连接到“频率产生器”区域中的WAVE端子上。4. 程序设计内容(1). 定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。送到数码管显示出来。(2). T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。5. C语言源程序#include&&AT89X52.H&unsigned&char&code&dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned&char&code&dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};unsigned&char&dispbuf[8]={0,0,0,0,0,0,10,10};unsigned&char&temp[8];unsigned&char&unsigned&char&T0unsigned&char&bit&unsigned&long&x;&void&main(void){&&unsigned&char&i;&&TMOD=0x15;&&TH0=0;&&TL0=0;&&TH1=()/256;&&TL1=()%256;&&TR1=1;&&TR0=1;&&ET0=1;&&ET1=1;&&EA=1;&&&&while(1)&&&{&&&&&if(flag==1)&&&&&&&{&&&&&&&&&flag=0;&&&&&&&&&x=T0count*65536+TH0*256+TL0;&&&&&&&&&for(i=0;i&8;i++)&&&&&&&&&&&{&&&&&&&&&&&&&temp[i]=0;&&&&&&&&&&&}&&&&&&&&&i=0;&&&&&&&&&while(x/10)&&&&&&&&&&&{&&&&&&&&&&&&&temp[i]=x%10;&&&&&&&&&&&&&x=x/10;&&&&&&&&&&&&&i++;&&&&&&&&&&&}&&&&&&&&&temp[i]=x;&&&&&&&&&for(i=0;i&6;i++)&&&&&&&&&&&{&&&&&&&&&&&&&dispbuf[i]=temp[i];&&&&&&&&&&&}&&&&&&&&&timecount=0;&&&&&&&&&T0count=0;&&&&&&&&&TH0=0;&&&&&&&&&TL0=0;&&&&&&&&&TR0=1;&&&&&&&}&&&}}void&t0(void)&interrupt&1&using&0{&&T0count++;}void&t1(void)&interrupt&3&using&0{&&TH1=()/256;&&TL1=()%256;&&timecount++;&&if(timecount==250)&&&&{&&&&&&TR0=0;&&&&&&timecount=0;&&&&&&flag=1;&&&&}&&P0=dispcode[dispbuf[dispcount]];&&P2=dispbit[dispcount];&&dispcount++;&&if(dispcount==8)&&&&{&&&&&&dispcount=0;&&&&}}
知道贡献者0899知道合伙人
知道贡献者0899
采纳数:851
获赞数:52043
擅长:暂未定制
注册个单片机论坛账号,这种程序很多!
sharkzyn知道合伙人
采纳数:11
获赞数:96
擅长:暂未定制
先确定任务流程,再设计硬件电路,然后设计程序。下面是我做的一个,你先看看关键程序部分。long sum=0;//溢出次数long sumdis=0;//显示总数long temp=0;int s=0;//计时计数初始化void T_C_init (void){ TMOD = 0x15;//timer1计时,timer0计数 EA = 1; //中断总开关 ES=0; ET1=1; EX1=0; ET0=1; EX0=0; PT1=1; TH1 = 0x45;//0xb1; //16位计数寄存器T1高8位(写入初值) TL1 = 0x47;//0 //16位计数寄存器T1低8位 b54f = 20mS 4547=50ms延时 ET1 = 1; //T/C1中断开关
TH0 = 0 //16位计数寄存器T0高8位 TL0 = 0x00; //16位计数寄存器T0低8位 ET0 = 1; //T/C0中断开关 TR1 = 1; //T/C1启动开关 TR0 = 1; //T/C0启动开关}//计时中断函数void T_C1 (void) interrupt 3
using 3{if(s&19){TR0 = 0;TR1 = 0;temp=temp+sum*0xff+TL0;//1秒计数值TH0 = 0 //16位计数寄存器T0高8位(重新写入初值)TL0 = 0x00; //16位计数寄存器T0低8位TH1 = 0x45; //16位计数寄存器T1高8位(重新写入初值)TL1 = 0x47; //16位计数寄存器T1低8位(0x3CB0 = 50mS延时)s++;sum=0;TR0 = 1;TR1 = 1;}else{sumdis=temp=0;s=0;}}//计数中断函数void T_C0 (void) interrupt 1
using 1{ TH0 = 0 //16位计数寄存器T0高8位(重新写入初值) TL0 = 0x00; //16位计数寄存器T0低8位 sum++;}
没有显示部分吗???要求P1口是断码控制口(显示),P2口是位控制口。。没有共阳极的断码吗???怎么显示呢???有点看不懂,能不能详细些呢。。。。???
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机定时计数器T0和T1是否一定要开总中断EA=1;才能进行计数_百度知道
51单片机定时计数器T0和T1是否一定要开总中断EA=1;才能进行计数
当TR1=1;EA=0;T0T1是否可以进行计数,该命题是否可以成立?...
当TR1=1;EA=0;T0 T1是否可以进行计数,该命题是否可以成立?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
热心网友知道合伙人
当EA =0时,计数器是不会计数的,因为EA是始能端,EA=0相当于块不可被调用,块不工作自然就不能计数。
查询状态EA不用开启。但是定时器还是能计数的,只是不能中断。可以通过软件判断TF1或TF0是否为零来判断时间计时时间
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。数码管动态扫描-按键-流水灯(附仿真图) - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
数码管动态扫描-按键-流水灯(附仿真图)
<em id="authorposton14-9-9 09:54:01
#include&reg52.h&
#define& && &uchar& && &unsigned char& && && && && && && && && && && && && && && &//无符号char类型
#define& && &uint& && & unsigned int& && && && && && && && && && && && && && && &//无符号int类型
/************************常用位抄作指令*****************************/
#define set_bit(x,y)& && && && &&&(x|=(1&&y))& && && && && && && && && && && && &&&//位置1
#define clr_bit(x,y)& && && && &&&(x&=~(1&&y))& && && && && && && && && && && & //位清0
#define get_bit(x,y)& && && && &(x&(1&&y))& && && && && && && && && && && && &&&//位查询
#define& & xor_bit(x,y)& && && && & (x^=(1&&y))& && && && && && && && && && && && &&&//位取反
#define& & MAKEWORD(v1,v2)& && && && &(((uint)(v1)&&8) + (uint)(v2))& && && && && && &//高低位字节组合为一个字v1高,v2低
#define& & HIBYTE(v1)& && && && && & ((uchar)((v1)&&8))& && && && && && && && && && &//取高位字节
#define& & LOBYTE(v1)& && && && && & ((uchar)((v1)&0xff))& && && && && && && && &&&//取低位字节
#define& & nop()& && && && && && &&&_nop_
/********************************************************************/
#define LongToBin(n) \
(& && && && && && &&&\
((n && 21) & 0x80) | \
((n && 18) & 0x40) | \
((n && 15) & 0x20) | \
((n && 12) & 0x10) | \
((n &&&&9) & 0x08) | \
((n &&&&6) & 0x04) | \
((n &&&&3) & 0x02) | \
((n& && &) & 0x01)& &\
#define Bin(n) LongToBin(0x##n##l)& && && && && && && && && && && && && && &&&//write binary charactor set,exsample : Bin() = 0xff
//*******************************数码管com口定义**********************************//
#define display_location_1_set& && && &set_bit(P3,0)//P3_3=1
#define display_location_1_clr& && && &clr_bit(P3,0)//P3_3=0
#define display_location_2_set& && && &set_bit(P3,1)//P3_2=1
#define display_location_2_clr& && && &clr_bit(P3,1)//P3_2=0
#define display_location_3_set& && && &set_bit(P3,2)//P3_1=1
#define display_location_3_clr& && && &clr_bit(P3,2)//P3_1=0&&
#define display_location_4_set& && && &set_bit(P3,3)//P3_0=1
#define display_location_4_clr& && && &clr_bit(P3,3)//P3_0=0
//*******************************数码管断码定义**********************************//
#define display_1_set& && && && && &&&set_bit(P2,0)//P1_4=0
#define display_1_clr& && && && && &&&clr_bit(P2,0)//P1_4=1
#define display_2_set& && && && && & set_bit(P2,1)//P1_6=0
#define display_2_clr& && && && && &&&clr_bit(P2,1)//P1_6=1
#define display_3_set& && && && && & set_bit(P2,2)//P2_5=0
#define display_3_clr& && && && && & clr_bit(P2,2)//P2_5=1
#define display_4_set& && && && && &&&set_bit(P2,3)//P2_3=0
#define display_4_clr& && && && && &&&clr_bit(P2,3)//P2_3=1
#define display_5_set& && && && && &&&set_bit(P2,4)//P2_2=0
#define display_5_clr& && && && && &&&clr_bit(P2,4)//P2_2=1
#define display_6_set& && && && && &&&set_bit(P2,5)//P1_5=0
#define display_6_clr& && && && && &&&clr_bit(P2,5)//P1_5=1
#define display_7_set& && && && && &&&set_bit(P2,6)//P2_6=0
#define display_7_clr& && && && && &&&clr_bit(P2,6)//P2_6=1
#define display_8_set& && && && && &&&set_bit(P2,7)//P2_4=0
#define display_8_clr& && && && && &&&clr_bit(P2,7)//P2_4=1
uchar& && &&&bite=1;& && && && && && && && && && && && && && && && && && && && && && && && && && && & //数码管位转换数据& &
//*****************************时间标记变量*************************************//
uchar& && &r_timer_2ms=0;& && && && && && && && && && && && && && && && && && && && && && && && && && && &&&//2ms计数累加器
bit& && && &&&f_timer_2ms=0;& && && && && && && && && && && && && && && && && && && && && && && && && && && &&&//2ms标记& &
uchar& & r_timer_500ms=0;& && && && && && && && && && && && && && && && && && && && && && && && && & //500ms计数累加器
bit& && &&&f_timer_500ms=0;& && && && && && && && && && && && && && && && && && && && && && && && && &&&//500ms标记
uchar& &&&key_data_old=0;& && && && && && && && && && && && && && && && && && && && && && && && && && &&&//按键编码上一状态保持寄存器
uint& & show_data=1000;& && && && && && && && && && && && && && && && && && && && && && && && && && &&&//数码管显示数值保持寄存器
//**********************************稳定性处理函数***************************//
uint& && && && &key_keep_timer[8];& && && && && && && && && && && && && && && && && && && && && && &&&//稳定性计数次数初始化为0
uchar& && && &&&key_station=0;& && && && && && && && && && && && && && && && && && && && && && && & //稳定性状态标志信号反馈
//*****************************数码管BCD码值*************************************//
code unsigned char& && & LED_DATA[10] ={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,
//& && && && && && && && && && && && && && && &0& &1& & 2& &&&3& & 4& & 5& & 6& & 7
& && && && && && && && && && && && && && && & 0x01,0x09,};//,0x3e,0x9c,0x7a,0x9e,0x8e};
//& && && && && && && && && && && && && && && &8& &9& &&&-& & 消& &e& && && &c& & d& & e& & f& &
void scan_io(uchar LED_TABLE)
& && && && &&&//*******************************************************************************//
& && && && &&&if(LED_TABLE & 0x80)& && &display_1_else display_1_& && && && && && && && && & //a段码控制
& && && && &&&if(LED_TABLE & 0x40)& && &display_2_else display_2_& && && && && && && && && & //b段码控制
& && && && &&&if(LED_TABLE & 0x20)& && &display_3_else display_3_& && && && && && && && && & //c段码控制
& && && && &&&if(LED_TABLE & 0x10)& && &display_4_else display_4_& && && && && && && && && & //d段码控制
& && && && &&&if(LED_TABLE & 0x08)& && &display_5_else display_5_& && && && && && && && && & //e段码控制
& && && && &&&if(LED_TABLE & 0x04)& && &display_6_else display_6_& && && && && && && && && & //f段码控制
& && && && &&&if(LED_TABLE & 0x02)& && &display_7_else display_7_& && && && && && && && && & //g段码控制
& && && && &&&if(LED_TABLE & 0x01)& && &display_8_else display_8_& && && && && && && && && & //H段码控制& &&&
& && && && &&&//*******************************************************************************//
void scan_lcd(uint Timer_Count_show)
& & unsigned char temp_data1;unsigned char temp_data2;unsigned char temp_data3;unsigned char temp_data4;unsigned char& && &LED_TABLE;& &
//********************数码管1-4全消隐,避免产生鬼影******************************//
& && &display_location_1_& && && && && && && && && && && && && && && && && && && && && && && &&&//数码管1消隐
& && &display_location_2_& && && && && && && && && && && && && && && && && && && && && && && &&&//数码管2消隐
& && &display_location_3_& && && && && && && && && && && && && && && && && && && && && && && &&&//数码管3消隐
& && &display_location_4_& && && && && && && && && && && && && && && && && && && && && && && &&&//数码管4消隐
& && &display_1_display_2_display_3_& && && && && && && && && && && && && && && && && & //消隐数码屏
& && &display_4_display_5_display_6_& && && && && && && && && && && && && && && && && & //消隐数码屏
& && &display_7_display_8_& && && && && && && && && && && && && && && && && && && && && && &&&//消隐数码屏
//*******************************获取个位*******************************//
& && &temp_data1=Timer_Count_show/1000;& &&&
& && &temp_data2=Timer_Count_show%;
& && &temp_data3=Timer_Count_show%;
& && &temp_data4=Timer_Count_show%;
& && &&&switch(bite)& && && && && && && && && && && && && && && && && && && && && && && && && && && && &
& && &&&{& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&
& && && & case 1:& && && && && && && && && && && && && && && && && && && && && && && && && && && && &//千位
& && && & {
& && && && &&&bite=2;
& && && && &&&display_location_1_
& && && && &&&//******************************获取查表数值*************************************//
& && && && &&&LED_TABLE=LED_DATA[temp_data1];& && && && && && && && && && && && && && && && && && && & //获取查表数值& &&&
& && && && &&&//******************************************************//
& && && & }
& && && & case 2:& && && && && && && && && && && && && && && && && && && && && && && && && && && && & //百位
& && && & {
& && && && &&&bite=3;
& && && && &&&display_location_2_
& && && && &&&//******************************获取查表数值*************************************//
& && && && &&&LED_TABLE=LED_DATA[temp_data2];& && && && && && && && && && && && && && && && && && && & //获取查表数值
& && && && &&&//*******************************************************************************//& && &&&
& && && & }
& && && & case 3:& && && && && && && && && && && && && && && && && && && && && && && && && && && &&&//十位
& && && & {
& && && && &&&bite=4;&&
& && && && &&&display_location_3_
& && && && &&&//******************************获取查表数值*************************************//
& && && && &&&LED_TABLE=LED_DATA[temp_data3];& && && && && && && && && && && && && && && && && && && & //获取查表数值
& && && && &&&//*******************************************************************************//& && &&&
& && && & }
& && && & case 4:
& && && & {
& && && && &&&bite=1;& && && && && && && && && && && && && && && && && && && && && && && && && && & //个位
& && && && &&&display_location_4_
& && && && &&&//******************************获取查表数值*************************************//
& && && && &&&LED_TABLE=LED_DATA[temp_data4];& && && && && && && && && && && && && && && && && && && & //获取查表数值
& && && && &&&//*******************************************************************************//
& && && && &&&
& && && & }
& && && & default:& &
& && &&&scan_io(LED_TABLE);& && && && && && && && && && && && && && && && && && && && && && && && & //数码管扫描
/*===================定时器1初始化程序区=====================*/
/*16.6M12分频时钟,八位自动重装定时125us定时器*/
void timer0_init(void)
& & clr_bit(TMOD,0);& && && && && & //M01& & 0 0 : 13 位定时器/计数器& && && &&&0 1 : 16 位定时器/计数器
& & set_bit(TMOD,1);& && && && && & //M11& &&&1 0 : 8 位自动重载定时器& && && && & 1 1 : 定时器0 此时作为双8 位定时器/计数器
& & clr_bit(TMOD,2);& && && && && & //C/T1& &&&0:定时器,T0 计数来源于Fosc 分频& &&&1:计数器,T0 计数来源于外部管脚T0/P1.2
& & clr_bit(TMOD,3);& && && && && & //GATE1& &&&TMOD[3]控制定时器0,置0 且TR0 置1 时才打开T0& &
& && && && && && && && && && && && & //1-T1FD T1 输入频率选择控制& &0:T1 频率源自于Fosc/12& && &1:T1 频率源自于Fosc/4
& && && && && && && && && && && && &//0-T0FD T1 输入频率选择控制& &0:T1 频率源自于Fosc/12& && &1:T1 频率源自于Fosc/4& &
& & TL0=0x83;& && && && && && && && && &//8位自动重载125us一次中断& &
& & TH0=0x83;& && &&&
& & TR0=0;& && && && && && && && && & //定时器T1的运行控制位。打开timer1前,先清TRO
& & ET0=1;& && && && && && && && && & //允许timer1中断
& & TR0=1;& && && && && && && && && & //允许timer1开始计数
& & EA=1;& &
/***********************定时器1中断入口函数**************************/
void timer0()& & interrupt 1& && &&&//125us中断一次
& & r_timer_2ms++;
& & xor_bit(P3,5);
& & if(r_timer_2ms&=16)& && && && & //125us*16=2ms
& && &&&r_timer_2ms=0;
& && &&&f_timer_2ms=1;
//**************************************************************************//& && &&&
void key_station_scan(uchar station,uint click_timer,uchar keep_way)& && && && && && && && && && &//稳定性检测函数& &station 为输入状态检测信号
{& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&//click_timer为检测次数& && &keep_way为利用的函数信号通道
& & if(station)& && && && && && && && && && && && && && && && && && && && && && && && && && && &//信号输入比较是否为1
& && &&&if(key_keep_timer[keep_way]==click_timer)& && && && && && && && && && && && && && && && & //计数对比是否达到稳定性次数要求
& && &&&set_bit(key_station,keep_way);& && && && && && && && && && && && && && && && && && && & //状态标记置位& &
& && &&&if(key_keep_timer[keep_way]&65535)& && && && && && && && && && && && && && && && && && && &//防计数溢出
& && &&&key_keep_timer[keep_way]++;& && && && && && && && && && && && && && && && && && && && & //计数未达到要求继续累加计数
& & else& && && && && && && && && && && && && && && && && && && && && && && && && && && && && & //稳定性信号不符合清楚计数和标记
& & key_keep_timer[keep_way]=0;& && && && && && && && && && && && && && && && && && && && && &&&//计数器清零
& & clr_bit(key_station,keep_way);& && && && && && && && && && && && && && && && && && && && &&&//状态标记清零
void& & key_deal(void)& && && && && && && && && && && && && && && && && && && && && && && && && & //按键功能处理
& && &&&uchar key_data=0;
& && &&&if(get_bit(P3,7))set_bit(key_data,0);
& && &&&if(get_bit(P3,6))set_bit(key_data,1);
& && &&&key_station_scan(key_data_old==key_data,10,0);& && && && && && && && && && && && && && &&&//检测是否有联系20次按键稳定值
& && &&&key_data_old=key_& && && && && && && && && && && && && && && && && && && && && && &&&//按键状态值更新
& && &&&if(get_bit(key_station,0))
& && &&&{clr_bit(key_station,0);& && && && && && && && && && && && && && && && && && && && && & //检测到稳定的按键值信号标记
& && && && &switch(key_data)& && && && && && && && && && && && && && && && && && && && && && &&&//检测到按键稳定性后进行按键解码处理
& && && && &{
& && && && && & case& & Bin():show_data++;& && && && && && && && && && && && && & //+
& && && && && & case& & Bin():show_data--;& && && && && && && && && && && && && & //-
& && && && &}
void timer_count(void)& && && && && && && && && && && && && && && && && && && && && && && && &&&//时间标记计数函数
& && &&&r_timer_500ms++;
& && &&&if(r_timer_500ms&=10)& && && && && && && && && && && &
& && && && &r_timer_500ms=0;
& && && && &f_timer_500ms=1;& && && && && && && && && && && && && && && && && && && && && && && & //置位500ms时间基准标记& && && && &&&
& && &&&}& && && && &
uchar P1_data=Bin();
void& & liushui_led(void)
& && &&&if(f_timer_500ms)
& && &&&{f_timer_500ms=0;
& && && &P1_data=(P1_data&&1);
& && && &if(!P1_data){P1_data=Bin();}
& && && &P1=P1_
void main()
& & timer0_init();& && && && && && && && && && && && && && && && && && && && && && && && && && &&&//定时器0初始化
& & P1=Bin();
& & while(1)
& && &&&if(f_timer_2ms)& && && && && && && && && && && && && && && && && && && && && && && && && & //2ms执行一次主程序
& && && && &f_timer_2ms=0;& && && && && && && && && && && && && && && && && && && && && && && && &//时间标记清零
& && && && &key_deal();& && && && && && && && && && && && && && && && && && && && && && && && && & //按键处理函数
& && && && &scan_lcd(show_data);& && && && && && && && && && && && && && && && && && && && && & //数码管显示函数
& && && && &timer_count();& && && && && && && && && && && && && && && && && && && && && && && && &//时间基准函数
& && && && &liushui_led();& && && && && && && && && && && && && && && && && && && && && && && && &//流水灯处理
& && && && &xor_bit(P3,4);
(96.91 KB, 下载次数: 7)
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
先谢谢楼主的分享精神, 稍后认真看看楼主的代码, 对于按键这个地方, 一直是似懂非懂!
先谢谢楼主的分享精神, 稍后认真看看楼主的代码, 对于按键这个地方, 一直是似懂非懂! ...
有不理解需要咨询可以问我,很乐意帮忙
好帖,做个记号!!!!!!!!!!!!
好帖,做个记号!!!!!!!!!!!!
好东西就应该给大家分享才行
有不理解需要咨询可以问我,很乐意帮忙
好的!谢谢楼主!
谢谢楼主分享啊,好东西
谢谢楼主分享啊,好东西
都是实际应用开发中的精华提取,供大家学习和应用
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司}

我要回帖

更多关于 数码管显示0-9999计数器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信