至于计数初值的计算,授之以鱼不如授之以渔!
在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12m晶振,则定时器的计数频率为1mhz。假设定时时间为t,机器周期为t1,即12/晶振频率。x为定时器初值。则
x=2^n-t/t1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8
自己算去吧!
#include
void
inittimer0(void)//
{
tmod
=
0x01
th0
=
0x0fc
//计数器初值
tl0
=
0x18
ea
=
1
et0
=
1
tr0
=
1//开启定时器t0
}
void
main(void)
{
inittimer0()
}
void
timer0interrupt(void)
interrupt
1
{
th0
=
0x0fc//重新赋初值
tl0
=
0x18
p1.0=~p1.0
//输出方波
}
//一个具有两个数加减乘除功能的计算器#include <stdio.h>
void main()
{
int a,b,c
char ch,ch1
printf("请输入表达式如 5+6= 然后按回车键:")
scanf("%d%c%d%c",&a,&ch,&b,&ch1)
switch(ch)
{
case '+':
c=a+b
printf("%d+%d=%d\n",a,b,c)
break
case '-':
c=a-b
printf("%d-%d=%d\n",a,b,c)
break
case '*':
c=a*b
printf("%d*%d=%d\n",a,b,c)
break
case '/':
c=a/b
printf("%d/%d=%d\n",a,b,c)
break
default:
printf("输入表达式错误或该计算器不具备 %ch 功能\n",ch)
}
}