
中断服务函数如果有特定的关键字修饰,比如keilc51用interrupt,不仅可以放在任意文件中,甚至可以用static把中断函数定义成局部的函数都没问题。
其他的,一般需要自己定顷察义入口调用,比如某系统的定时中断入口放在0x0008地址,则在0x0008地址放一条长跳转指令,或者直接把函数的地址放在0x0008地址,这个根据系统不同,可能有不同的要求。
另外,有的c把引导程雀闭茄序会有一个默认的中态宏断服务地址表,用户只需要根据系统的要求,按照一定的格式、名称定义好中断服务程序,系统就会自动调用。
你还没有理解数码管的动态的显示为什么4位数码管能够同时显示不同的数
是因为 你在对它不断的刷新
比如说
给数字8的段码
第一位数码管显示5MS 也就是延时
然后给数字4的段码
第二位数码管尘扰显示5MS
给数字6的段链森码
第三位数码管显示5MS
然后给数字5的段码
第四位数码管显示5MS
人肉眼能够识别的速度是20ms左右 一旦刷新速度过快 人棚兄亩就无法识别 速度过慢就不是动态显示了
光这么执行一遍 还不够 你必须得无限循环
这样四位数码管就显示8465四个数
你把数码管显示的程序放在中断中 中断的间隔时间太长 势必无法持续刷新 就造成显示成一位了
这个问题很泛哦把上电后只做一次的任务写到主函数里, 比如基本的初始化
把需要不断槐派循环做悄明雀的任务放到while(1)里,比如轮询,启早IO状态查询
把不知道什么时间会发生(比如外部中断,按键中断等)以及需要保证准时发生的任务(比如定时器时间到)放到中断里
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)