单片机定时/应用问题请教下
答案:4 悬赏:30 手机版
解决时间 2021-02-19 22:34
- 提问者网友:最爱你的唇
- 2021-02-19 10:33
单片机定时/应用问题请教下
最佳答案
- 五星知识达人网友:患得患失的劫
- 2021-02-19 12:05
开始5个代表什么意思 ORG 0000H LJMP MAIN 是不是在0000H单元 跳转到主程序 ORG 000BH?
-------开始 写ORG 000H, LJMP MAIN , 就是说LJMP MAIN 放在单片机的000H 位置,一般单片RESET 后开始运行的地址就是0000H, 这句话的作用是单片上电后或RESET后就跳到MAIN:这个地方,不是跳到ORG 000BH 这个地方,而是ORG 0100H这个地方,也就是MAIN的地方,ORG 的作用就是设定ORG 后面的程序从这个地方开始放。
LJMP DVTO 这两个又是什么意思 有什么联系 最后的ORG 0100H 代表什么?
------ ORG 000BH 这个地方是单片机的中断点,就是有中断,单片就会到这里,这里的程序LJMP DVTO 就是跳到中断服务程序的了!ORG 0100H 代表MAIN:MOV TMOD,#01H, 开始从地址0100H 放!
中断程序中 CPL P1.0取反的作用 以及为什么又要在中断程序中重新设定计数初值 MOV TH0 #0D8H MOV TL0,#0F0H 不是最后的中断返回RETI 返回主程序 将中断响应时保存的断点从栈顶弹回送PC CPU从原来中断的地方执行程序 那么中断程序中设定计数初值的作用是什么?
-------CPL P1.0 的作用就是产生方波,高,低,变化。 中断返回的地方是这里SJMP $
,所以你也知道中断的程序里为什么会设定计数初值的了!
-------开始 写ORG 000H, LJMP MAIN , 就是说LJMP MAIN 放在单片机的000H 位置,一般单片RESET 后开始运行的地址就是0000H, 这句话的作用是单片上电后或RESET后就跳到MAIN:这个地方,不是跳到ORG 000BH 这个地方,而是ORG 0100H这个地方,也就是MAIN的地方,ORG 的作用就是设定ORG 后面的程序从这个地方开始放。
LJMP DVTO 这两个又是什么意思 有什么联系 最后的ORG 0100H 代表什么?
------ ORG 000BH 这个地方是单片机的中断点,就是有中断,单片就会到这里,这里的程序LJMP DVTO 就是跳到中断服务程序的了!ORG 0100H 代表MAIN:MOV TMOD,#01H, 开始从地址0100H 放!
中断程序中 CPL P1.0取反的作用 以及为什么又要在中断程序中重新设定计数初值 MOV TH0 #0D8H MOV TL0,#0F0H 不是最后的中断返回RETI 返回主程序 将中断响应时保存的断点从栈顶弹回送PC CPU从原来中断的地方执行程序 那么中断程序中设定计数初值的作用是什么?
-------CPL P1.0 的作用就是产生方波,高,低,变化。 中断返回的地方是这里SJMP $
,所以你也知道中断的程序里为什么会设定计数初值的了!
全部回答
- 1楼网友:十鸦
- 2021-02-19 14:19
1,0000H表示单片机复位时的地址,复位后跳到主程序,000BH是定时器0的中断地址入口,然后跳到DVT0中断处理函数。ORG 表示下面所写的程序放在ROM的那个地址里,0000H,000BH,0100H都是这个意思。
2,定时器从0xFFFF跳0x0000产生一个中断,程序会自动跳转到000BH入口,进入中断。定时器已经变成0000了,所以要从新初始化一下才能再定时10ms
2,定时器从0xFFFF跳0x0000产生一个中断,程序会自动跳转到000BH入口,进入中断。定时器已经变成0000了,所以要从新初始化一下才能再定时10ms
- 2楼网友:持酒劝斜阳
- 2021-02-19 13:51
ORG 000H 告诉编译器从地址0处开始存放程序
LJMP MAIN 跳转到真正的主程序,因下面的地址是供中断用的
ORG 000BH 中断程序地址,定时器0中断入口地址就 是000BH ,不能变
LJMP DVT0 接着下面的地址空间是其它中断程序的入口地址,中间的8个字节写不完定时器中断程序,因此还要跳转
ORG 0100H 指定主程序首地址,这个是可以变的,但不要太大,大了中间有很多空间浪费了,如果程序很长,程序存储器会不够用
DVT0: CPL P1.0 中断程序可以接着主程序写,就不需再用ORG 。。。专门为其安排位置了
中断程序中重装计数器初值是必须的(也许定时65536us时可以不装,从0开始计数),是计数器工作方式(方式1)所决定的,如果不想重装,只能设置为工作方式2 (8 位自动重装模式, TMOD=0x02),但一次定时最大只有256us
取反当然是形成方波了,周期20ms,半个周期就要取反一次,也就 是说方波占空比是50%,高低电平时间都为10ms
LJMP MAIN 跳转到真正的主程序,因下面的地址是供中断用的
ORG 000BH 中断程序地址,定时器0中断入口地址就 是000BH ,不能变
LJMP DVT0 接着下面的地址空间是其它中断程序的入口地址,中间的8个字节写不完定时器中断程序,因此还要跳转
ORG 0100H 指定主程序首地址,这个是可以变的,但不要太大,大了中间有很多空间浪费了,如果程序很长,程序存储器会不够用
DVT0: CPL P1.0 中断程序可以接着主程序写,就不需再用ORG 。。。专门为其安排位置了
中断程序中重装计数器初值是必须的(也许定时65536us时可以不装,从0开始计数),是计数器工作方式(方式1)所决定的,如果不想重装,只能设置为工作方式2 (8 位自动重装模式, TMOD=0x02),但一次定时最大只有256us
取反当然是形成方波了,周期20ms,半个周期就要取反一次,也就 是说方波占空比是50%,高低电平时间都为10ms
- 3楼网友:像个废品
- 2021-02-19 13:26
ORG 0000H ;ORG是伪指令,是定义下面一条语句(LJMP MAIN)的起始地址为0000H
LJMP MAIN ;这条指令的意识是从当前地址(0000H)跳转到MAIN这个标号
ORG 000BH ;定义下面一条指令(LJMP DVT0)的起始地址
LJMP DVT0 ;跳转到DVT0这个标号
ORG 0100H ;下面的程序(标号MAIN)从地址0100H开始执行
MAIN:MOV TMOD,#01H ;定义定时器0工作模式1
MOV TH0,#0D8H ;赋定时0初值高8位
MOV TL0,#0F0H ;;赋定时0初值低8位
SETB ET0 ;开定时器0中断
SETB EA ;开总中断
SETB TR0 ;启动定时器0
SJMP $ ;原地循环(说明该单片机只能依靠中断来处理事件)
DVT0: CPL P1.0 ;P1.0取反
MOV TH0,#0D8H ;重赋初值
MOV TL0,#0F0H ;重赋初值
RETI ;中断返回
END ;程序结束
LJMP MAIN ;这条指令的意识是从当前地址(0000H)跳转到MAIN这个标号
ORG 000BH ;定义下面一条指令(LJMP DVT0)的起始地址
LJMP DVT0 ;跳转到DVT0这个标号
ORG 0100H ;下面的程序(标号MAIN)从地址0100H开始执行
MAIN:MOV TMOD,#01H ;定义定时器0工作模式1
MOV TH0,#0D8H ;赋定时0初值高8位
MOV TL0,#0F0H ;;赋定时0初值低8位
SETB ET0 ;开定时器0中断
SETB EA ;开总中断
SETB TR0 ;启动定时器0
SJMP $ ;原地循环(说明该单片机只能依靠中断来处理事件)
DVT0: CPL P1.0 ;P1.0取反
MOV TH0,#0D8H ;重赋初值
MOV TL0,#0F0H ;重赋初值
RETI ;中断返回
END ;程序结束
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯