介绍计数器 定时器 程序 的编写步骤 (C语言的)

Python018

介绍计数器 定时器 程序 的编写步骤 (C语言的),第1张

假设你用的晶振为12m,用p1.0口输出周期为2ms的方波。使用定时器工作方式1.

至于计数初值的计算,授之以鱼不如授之以渔!

在定时器模式下,计数器的计数脉冲来自于晶振脉冲的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)

}

}