“T0中断服务程序不是一个子程序吗?但没看见在主程序中调用这个子程序啊,求讲解这个程序命令的运行过程,定时器怎么中断的?”
该子程序是在硬件产生中断的时候,跳转到相应中断入口后,再跳转到这个中断服务程序的。请注意函数后面的“interrupt x”声明,这是C51的扩展内容。
“用示波器测波形是测p10引脚,为什么是这个引脚,怎么确定的?p1_0不是个变量名吗?”
P1_0这个符号在前面的头文件 t89c51cc02h 中有定义。至于“为什么是这个引脚”,是由硬件设计及本程序共同确定的。P1_0(不是你写的p1_0,C语言要区分大小写哦)代表P1口的第0管脚,在头文件中通过sbit定义。
“为什么T0中断服务程序和主程序中都有T0的初值,设置还是一样,他们有什么关系?”
主程序前面的是对Timer0初始化,赋以初值。执行 TR0 = 1; 这一句以后,Timer0就开始运行了——TL0与TH0组成的13位计数器开始不断递增。当13位全部为1之后,再递增就全部为0,此时溢出事件会触发产生定时器0,同时计数器仍然在继续计数——为了让时间间隔保持一致,就需要再度将计数器赋以初值。
呵呵 俺来帮你分析吧
单片机的循环程序和子程序有什么区别与联系
1 区别:
循环程序就是一段要反复执行的代码 只能在该处执行一次
即(执行一次要循环多次这一段代码)
子程序是一个相对独立的代码 单片机可以多次使用它 只要需要 就可以多次调用它
调用子程序要用到堆栈
每次运行只执行一次该段代码 但可以多次执行(没有次数上的限制)。
2 联系:
二者都是单片机的一种程序形式,一个子程序内部可以包含一个循环程序(如延时子程序)。
呵呵 满意就给加分喽
main在C语言中整个程序的入口函数,固定的
main在汇编中只是一个标号,一般是放在主程序的入口,前面是初始化程序,标号名称随意但首个必须是字母
acall和lcall都是子程序调用
acall是兼容8048的指令,两字长,寻址范围小
Lcall是8051才有的指令,三字长,寻址范围64K
8048是8051的原始型号
以上就是关于单片机C语言程序,看不懂,求讲解全部的内容,包括:单片机C语言程序,看不懂,求讲解、单片机的循环程序和子程序有什么区别与联系、单片机中的main 是什么意思,还有acall和lcall分别是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)