求助一段简单的单片机编程(汇编语言)

单片机P3.0口输出一定频率的脉冲,脉冲间隔为0.5秒,用普通的延时程序就行。晶振频率为6MH。... 单片机P3.0口输出一定频率的脉冲,脉冲间隔为0.5秒,用普通的延时程序就行。晶振频率为6MH。 展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
MAIN: MOV SP,#50H MOV DPTR,#TAB;读入字模指针 MOV 30H,DPL; 存起来 ;堆栈低8位 MOV 31H,DPH ;堆栈高8位 MOV 32H,30H;再记录指针,留作移动了多少位的判断 用。 MOV 3H,31H ;3H记录字模数据的高位地址 INC 3H;3H高位地址+5,表示数据有5X256列之多。 ROL: MOV R2,#01H;设扫描次数 INI1: MOV DPL,30H;这段是扫描一次32列 MOV DPH,31H MOV R4,#32 MOV R3,#0 LOP1 P1,R3 CLR A MOVC A,@A+DPTR MOV P0,A INC DPTR CLR A MOVC A,@A+DPTR MOV P2,A INC DPTR CAL DELAY INC R3 DJNZ R4,LOP1 DJNZ R2,INI1;这条预留扫描次数用可以调整速度 MOV DPL,3…
jiajingtao126
2009-05-22 · TA获得超过289个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:0
展开全部
你的晶振为6MH,所以机器周期则为2us.即500MS(0.5秒的时间如下)
DELAY500Ms:
MOV R7,#0x0F
loop3:MOV R6,#0xCA
loop2:MOV R5,#0xA2
loop1:DJNZ R5,loop1
DJNZ R6,loop2
DJNZ R7,loop3
RET
延时总时间 = 三层循环 +子程序调用 2us + 子程序返回 2us = 499996+4 = 500000us =500ms
这个延时程序比较准确,你可以用示波器看下。
ORG 0000H
AJMP MIAN
ORG 0100H
MIAN:
NEXT:CPL P3.0
ACALL DELAY500Ms
SJMP NEXT
这个程序你可以直接编译后下载到单片机里去运行。

但我建议你不要用这种方法,因为它太占用系统时间,效率很差,你可以用定时做,这样不但非常准确而且不占用时间,系统还可以处理其它很多事情。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2021-01-14 广告
可以写对它写程序,让它听从你的安排,你让它实现什么功能它就能实现,比如电子钟、电子琴、打印机、手机、电梯控制,智能家具如:空调、冰箱、洗衣机等,如果这些家电没有它,什么都不能工作。单片机内部很复杂,你研究的越深你就会越爱上它,它可以帮你实现... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
dxw0712
2009-05-22 · TA获得超过2180个赞
知道大有可为答主
回答量:1596
采纳率:23%
帮助的人:186万
展开全部
楼上的写的是10S的延时程序,而且不是很精准,用push和pop也占用了很多资源。
DELAY:
MOV R7,#250
DELAY1:
MOV R6,#248
DJNZ R6,$
DJNZ R7,DELAY1
RET
这个程序只有6个us的误差

输出脉冲程序:
TT:CPL P3.0
ACALL DELAY
SJMP TT
这个是死循环,就是一直输出脉冲,除非来中断,如果你只是调用这个程序,然后做别的事情,之需要设置一个寄存器,做了几次就结束就ok。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
电子粉丝
2009-05-22 · TA获得超过8016个赞
知道大有可为答主
回答量:6943
采纳率:74%
帮助的人:2854万
展开全部
ORG 0000H
AJMP START
ORG 0050H
START: ACALL KS0 ; 停止0.5S
CLR P1.0 ;输出
ACALL KSA ; 输出 0.5S
AJMP START
KS0: MOV R0,#008H
KS1: MOV R1,#0FFH
KS2: MOV R2,#03CH
DJNZ R2,$
DJNZ R1,KS2
DJNZ R0,KS1
RET
KSA: MOV R0,#008H
KSB: MOV R1,#0FFH
KSC: MOV R2,#03CH
DJNZ R2,$
CPL P1.0
DJNZ R1,KSC
DJNZ R0,KSB
RET
END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a33403916
2009-05-22 · TA获得超过313个赞
知道小有建树答主
回答量:494
采纳率:100%
帮助的人:357万
展开全部
仿真调试一下具体参数
程序就 是这样

_DELAY:
PUSH 0
PUSH 1
PUSH 2

MOV R0,#50
_D1:
MOV R1,#200
_D2:
MOV R2,#250
DJNZ R2,$
DJNZ R1, _D2
DJNZ R0, _D1

POP 2
POP 1
POP 0
RET
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式