KEIL定时计数器编程时间不对
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KEIL定时计数器编程时间不对相关的知识,希望对你有一定的参考价值。
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuint num=0,temp=0;uchar code table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;sbit wela=P2^7;sbit dula=P2^6;void main() TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TCON=0x10; wela=1; P0=0xc0; wela=0; while(1) if(temp%10==0) num++; if(num==16) num=0; dula=1; P0=table[num]; dula=1; void delay() interrupt 1 temp++; TH0=(65536-50000)/256; TL0=(65536-50000)%256;
上面是源程序
为什么
if(temp%10==0) num++; if(num==16) num=0; dula=1; P0=table[num]; dula=1;
这么写出来之后运行时间不对呢?而且
if(temp==10) temp=0; num++; if(num==16) num=0; dula=1; P0=table[num]; dula=1; 这样改了一下就OK了 这两种不是一样的么?
temp = 0; //少了这句
num++;
if(num==16) num=0;
dula=1;
P0=table[num];
dula=1;
本回答被提问者采纳 参考技术C 二楼正解,因为溢出后就不再是10的倍数 参考技术D 到网上搜一下,有专门的计算工具
编程中如何确保定时任务数据上传stm32
参考技术A 通用定时器。在4个可同步运行的通用定时器(TIM2、TIM3、TIM4和TIM5)中,每个定时器配备一个16位的自动加载递增/递减计数器一个16位的预分频器和4个独立的通道。以上是关于KEIL定时计数器编程时间不对的主要内容,如果未能解决你的问题,请参考以下文章
stm32怎么通过仿真器在keil的debug中查看定时器的计数值