我一直很困惑单片机中断程序的定时器0和定时器1。6.led作业.c(29): error C141: syntax error near ‘void’
对于定时器赋值有两种方法,一种是直接给高八位和低八位赋值,另一种是用类似于:TH0=(65536-50000)/256;进行赋值。
我想问:1,这两种方法到底有什么区别。
2,如果用直接赋值的方法,(也就是第一种直接给高八位低八位)要设定一个50毫秒,30毫秒,或20毫秒的中断服务应该怎么赋值。
用baic语言实现的,先要定义好du定时器的初值,不管你使用zhi多大dao的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期,机器周期=12/n(n指晶振频率),
假设你要定时的时间为m,那么定时的初值为:m/机器周期=初值;th0=(65536-初值)%256;tl0=(65536-初值)/256;将(65536-初值)所得的值化成16进制,其高位就是th0的值,低位为tl0的值,例如用12m晶振做1ms定时计算如下:机器周期=12/12106=1us(微秒)定时初值=(1*10-3)/(110^-6)=1000;所以:th0=(65536-1000)%256;tl0=(65536-1000)/256;将65536-1000=64536化为16进制为:0xfc18,th0=0xfc,tl0=0x18;定好初值后要延迟一秒就定一个延时参数,这里使用1000就行了(定时为1ms)中断程序为:timer0()interrupt1//1ms延时(12.0mhz)
更多回帖