如何用C51 写每隔一秒执行一次的定时器中断?(AT89C51)

jyd30 2003-12-03 04:15:43
如何用C51 写每隔一秒执行一次的定时器中断?


键盘中断 ?
...全文
1173 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyd30 2003-12-08
  • 打赏
  • 举报
回复
我说是用 C51 ,用C语言实现,不过现在已经解决问题了,谢谢大家。
嵌入式电子 2003-12-07
  • 打赏
  • 举报
回复
各位大哥们都说的很清楚了,特别是楼上的大哥,程序都给出了~~
zhizhengtanwei 2003-12-06
  • 打赏
  • 举报
回复
既然各位大虾都不愿出手,
那只能由小生代劳了。
以主振频率为6MHZ为例,指令周期为12*1/6M=2us
每一秒钟中断一次,共要计数1000*1000/2=500000=200*250*10
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER0

START:MOV TMOD,#20H
MOV TH0,#06H
MOV TL0,#06H
MOV R7,#200
MOV R6,#10
SETB EA
SETB ET0
SETB TR0
SJMP $
TIMER0:DJNZ R7,ENDS
MOV R7,#200
DJNZ R6,ENDS
MOV R6,#10
NOP;加入中断服务程序
NOP;加入中断服务程序
NOP;加入中断服务程序
NOP;加入中断服务程序
ENDS: RETI

END
fuxf 2003-12-05
  • 打赏
  • 举报
回复
补充一点:计数器中断后重新对变量赋初值.
fuxf 2003-12-05
  • 打赏
  • 举报
回复
直接用一级定时中断不行吧!可考虑两级定时器串联使用,一个作定时中断,一个作计数用,当定是中断中断后输出一个脉冲给计数器,作为计数的输入.当计数器收到一定脉冲个数后(即达到1S后中断),出现中断.
zhizhengtanwei 2003-12-05
  • 打赏
  • 举报
回复
对了,要“每隔一秒执行一次的定时器中断“
定时器的工作方式最好选用方式2
zhizhengtanwei 2003-12-05
  • 打赏
  • 举报
回复
紧跟----CrazyGentleman(疯狂绅士)
最好理解一下什么叫“中断”
是“中断”
大哥们

要定时一秒的“中断”,有两个因素决定定时时间:
一、单片机的主振频率是6M还是12M
二、定时器计数初值。
课本上有例子,好好学吧!
CrazyGentleman 2003-12-05
  • 打赏
  • 举报
回复
最好理解一下什么叫“中断”
wfy 2003-12-04
  • 打赏
  • 举报
回复
第一种就是利用定时器来定时记数,
第二种就是自己写一个DELAY的子程式,只要计算好指令的条数和运行时间,片子的周期时间就可以了
ppcust 2003-12-04
  • 打赏
  • 举报
回复
用中断最好了
HEROP 2003-12-04
  • 打赏
  • 举报
回复
定时器中断最好,不浪费CPU时间。
BTW888 2003-12-03
  • 打赏
  • 举报
回复
設好定時器的初值,就可以了
有什麽問題麽,這個是最基本的

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧