中易网

请问以下8051单片机程序怎么写(用汇编语言)

答案:2  悬赏:0  
解决时间 2021-01-12 22:24
  • 提问者网友:杀生予夺
  • 2021-01-12 17:06
请问以下8051单片机程序怎么写(用汇编语言)
最佳答案
  • 二级知识专家网友:duile
  • 2021-01-12 18:06
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB ET0
SETB EA
SETB TR0
CLR P1.2
SETB P1.3
MOV R2,#5
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E
MOV R2,#5
CPL P1.2
CPL P1.3
T0E:
RETI
END
全部回答
  • 1楼网友:佘樂
  • 2021-01-12 19:03
ORG 0000H
SETB TR0 ;启动T0
CLR P1.2
SETB P1.3
LP1:
MOV R2, #50 ;定时计数初值
LOOP:
MOV TH0, #(8192 - 5000) / 32 ;定时10ms
MOV TL0, #(8192 - 5000) MOD 32
JNB TF0, $ ;等待8ms
CLR TF0
DJNZ R2, LOOP ;每隔10ms,R2减一次一
CPL P1.2 ;R2为0则LED亮灭转换
CPL P1.3 ;R2为0则LED亮灭转换
LJMP LP1
END追问你这不是中断方法啊。。。要是这样的我早就做出来了
中断方法定时器定不了那么长时间,它一溢出就跳到中断程序去了。追答;用中断,就稍稍麻烦一些:
ORG 0000H
SJMP START
;------------------------------------------
ORG 000BH
MOV TH0, #(8192 - 5000) / 32 ;定时10ms
MOV TL0, #(8192 - 5000) MOD 32
DJNZ R2, LOOP ;每隔10ms,R2减一次一
CPL P1.2 ;R2为0则LED亮灭转换
CPL P1.3 ;R2为0则LED亮灭转换
MOV R2, #50 ;定时计数初值
LOOP:
RETI
;------------------------------------------
START:
MOV TH0, #(8192 - 5000) / 32 ;定时10ms
MOV TL0, #(8192 - 5000) MOD 32
MOV IE, #82H
MOV R2, #50 ;定时计数初值
CLR P1.2
SETB P1.3
SETB TR0 ;启动T0
SJMP $
;------------------------------------------
END
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息