给Timer的赋值语句出错

[复制链接]
1929|12
 楼主| dingy 发表于 2012-11-26 19:20 | 显示全部楼层 |阅读模式
下面是一个定时程序的一部分,在编译时,给Timer的赋值语句为什么不对,正确的赋值语句?大侠帮帮忙
MOV TH0,#(65536-MS10) / 256 ;RELOAD TH0
MOV TL0,#(65536-MS10) .MOD. 256
PUSH A
MOV A,INTR_CNT
CJNE A,#10,$1
$1 JNC $2
SETB BUZZER
SJMP $3
$2 CLR BUZZER
$3 MOV A,INTR_CNT
INC A
MOV INTR_CNT,A
CJNE A,#100,$T0_END
MOV INTR_CNT,#00H
CPL SCOPE
$T0_END POP A
RETI
;
SET_TMR0
MOV A,#01H ;TIMER MODE 1
MOV TMOD,A
MOV TH0,#(65536-MS10) / 256 ;RELOAD TH0
MOV TL0,#(65536-MS10) .MOD. 256
CLR TF0 ;CLEAR TIMER0 FLAG
SETB TR0 ;TIMER0 START COUNT
SETB ET0 ;ENABLE TIMER0 INTERRUPT
SETB EA ;ENABLE SYSTEM INTERRUPT
RET
;
pengf 发表于 2012-11-26 19:21 | 显示全部楼层
下面是一个定时程序的一部分,在编译时,给Timer的赋值语句为什么不对,正确的赋值语句?大侠帮帮忙
MOV TH0,#(65536-MS10) / 256 ;RELOAD TH0
MOV TL0,#(65536-MS10) .MOD. 256
PUSH A
MOV A,INTR_CNT
CJNE A,#10,$1
$1 JNC $2
SETB BUZZER
SJMP $3
$2 CLR BUZZER
$3 MOV A,INTR_CNT
INC A
MOV INTR_CNT,A
CJNE A,#100,$T0_END
MOV INTR_CNT,#00H
CPL SCOPE
$T0_END POP A
RETI
;
SET_TMR0
MOV A,#01H ;TIMER MODE 1
MOV TMOD,A
MOV TH0,#(65536-MS10) / 256 ;RELOAD TH0
MOV TL0,#(65536-MS10) .MOD. 256
CLR TF0 ;CLEAR TIMER0 FLAG
SETB TR0 ;TIMER0 START COUNT
SETB ET0 ;ENABLE TIMER0 INTERRUPT
SETB EA ;ENABLE SYSTEM INTERRUPT
RET
;
栩栩如生 发表于 2012-11-26 19:22 | 显示全部楼层
MOV TH0,#(65536-MS10) / 256 ;RELOAD TH0
MOV TL0,#(65536-MS10) MOD 256
supernan 发表于 2012-11-26 19:23 | 显示全部楼层
第二条MOV指令有多余的字符


难道汇编器没有给你提示吗?
 楼主| dingy 发表于 2012-11-26 19:24 | 显示全部楼层
接受是正常的。就是发送数据未前面部分正确后面部分错误
 楼主| dingy 发表于 2012-11-26 19:24 | 显示全部楼层
不计算有没有简洁的赋值语句
llljh 发表于 2012-11-26 19:26 | 显示全部楼层
环境选择Keil A51就行了。
llljh 发表于 2012-11-26 19:26 | 显示全部楼层
还不行就用Keil Ax51替换你的 A51就行了。
kangzj 发表于 2012-11-26 19:30 | 显示全部楼层
MOV   DPTR,  #(65536-MS10)
MOV   TH0,  DPH
MOV   TL0,  DPL
 楼主| dingy 发表于 2012-11-26 19:30 | 显示全部楼层
OK,搞定
happy啦啦啦 发表于 2012-11-26 20:33 | 显示全部楼层
通过讨论我也学习了很多
happybird21 发表于 2012-11-26 21:01 | 显示全部楼层
汇编没用过,只会c了
dwananqinyan 发表于 2012-11-27 16:19 | 显示全部楼层
汇编比C好用 个人觉得
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部