单片机, 请求大神按照我的要求帮我编一个99倒计时到0的汇编语言的程序 ,不要用DIV的

作者&投稿:成哗 (若有异议请与网页底部的电邮联系)
【急求】单片机最小系统的一个倒计时汇编程序~

虽然你给出了板子的照片,但是你还是要给出该板子的原理图啊。不然程序不能和硬件对应,那就徒劳了。

CODE SEGMENT ASSUME CS:CODE ORG 100H START: PUSH CS POP DS PUSH CS POP ES MOV CX,10 MOV DL,'9' @00: MOV AH,2 INT 21H CALL DELAY1 DEC DL LOOP @00 MOV AH,9 LEA DX,MSG INT 21H MOV AH,4CH INT 21H MSG DB 13,10,'the time is over !$' DELAY1 PROC NEAR PUSH AX PUSH CX PUSH DX PUSH SI PUSH DI PUSHF MOV AH,0 INT 1AH MOV SI,CX MOV DI,DX @DELAY: MOV AH,0 INT 1AH SUB DX,DI SBB CX,SI CMP DX,18 JB @DELAY POPF POP DI POP SI POP DX POP CX POP AX RET DELAY1 ENDP CODE ENDS END START

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
    MOV TMOD,#01H
    MOV TH0,#HIGH(65536-10000)
    MOV TL0,#LOW(65536-10000)
    SETB ET0
    SETB EA
 MOV R0,#9
 MOV R1,#9
 MOV R2,#0
 MOV R3,#9
 CLR 00H
 CLR 01H
LOOP:
 JB P1.0,LP01
 JNB P1.0,$
 SETB TR0
 CLR 01H
 SJMP LOOP0
LP01:
 JB P1.1,LP02
 JNB P1.1,$
 SETB 01H
 SJMP LOOP0
LP02:
 JB P1.2,LOOP0
 JNB P1.1,$
 CLR TR0
 MOV P3,#0FDH
 MOV P2,#0
 MOV P3,#0FEH
 MOV P2,#0
 SJMP MAIN
LOOP0:
 JB 00H,LOOP1
 MOV A,R0
 SJMP LOOP2
LOOP1:
 MOV A,R1
LOOP2:
 MOV DPTR,#TABLE
 MOVC A,@A+DPTR
 MOV R3,A
 SJMP LOOP
T0ISR:
    CLR TR0
    MOV TH0,#HIGH(65536-10000)
    MOV TL0,#LOW(65536-10000)
    SETB TR0
 JB 01H,T0C
 INC R2
T0C:
 CPL 00H
 MOV A,R3
 JB 00H,T001
 MOV P3,#0FDH
 MOV P2,A
 SJMP T002
T001:
 MOV P3,#0FEH
 MOV P2,A
T002:
 MOV A,R2
 CJNE A,#100,T0E
 MOV R2,#0
 MOV A,R0
 JZ T003
 DEC R0
 SJMP T0E
T003:
 MOV A,R1
 JZ T004
 DEC R1
 MOV R0,#9
T0E:
 RETI
T004:
 CLR TR0
 RETI
TABLE:      ; 共阴极数码管显示代码表
    DB    3FH,06H,5BH,4FH,66H ;01234
    DB    6DH,7DH,07H,7FH,6FH ;56789

 END



    ORG 0000H

START:

    MOV   39H, #0C0H

    MOV   38H, #0F9H

    MOV   37H, #0A4H

    MOV   36H, #0B0H

    MOV   35H, #99H

    MOV   34H, #92H

    MOV   33H, #82H

    MOV   32H, #0F8H

    MOV   31H, #80H

    MOV   30H, #90H

    MOV   P3, #0

    MOV   TMOD, #01H

    SETB  TR0

LP: MOV   R0, #30H

LP0:MOV   R1, #30H

LP1:MOV   R5, #20

LP2:MOV   TH0, #3CH

    MOV   TL0, #0B0H

LP3:CALL  DISP

    JNB   P1.0, K1

    JNB   P1.1, K2

    JNB   P1.2, K3

    JNB   TF0, LP3

    CLR   TF0

    DJNZ  R5, LP2

    INC   R1

    CJNE  R1, #3AH, LP1

    INC   R0

    CJNE  R0, #3AH, LP0

    JMP   LP

K1:

    CALL  DISP

    JB    P1.0, LP3

    SETB  TR0

    JMP   LP3

K2: CALL  DISP

    JB    P1.1, LP3

    CLR   TR0

    JMP   LP3

K3: CALL  DISP

    JB    P1.2, LP3

    CLR   TR0

    MOV   R0, #39H

    MOV   R1, #39H

    MOV   R5, #01H

    JMP   LP2

DISP:

    MOV   P2, @R0

    SETB  P3.1

    DJNZ  R7, $

    DJNZ  R7, $

    CLR   P3.1

    MOV   P2, @R1

    SETB  P3.0

    DJNZ  R7, $

    DJNZ  R7, $

    CLR   P3.0

    RET

END


仿真截图如下:




雅江县19189459323: 求单片机c语言大神帮我写一段程序,单片机产生指定个数脉冲的程序,可能还有后续的问题 -
正牵复方: #include #define uint unsigned int#define uchar unsigned char#define NUM 100 //指定脉冲个数 void delay(uint x); //延时函数 sbit LA=P0^0; //设定引脚为P0.0 void main() { uchar i; for(i=0;i { LA=~LA; delay(1);} while(1); //程序在这里停止 } void delay(uint x) //这里设晶振频率为11.0592MHz x为1时延时1ms { uint y; for(;x>0;x--) for(y=114;y>0;y--); }

雅江县19189459323: 单片机问题,求大神帮忙 -
正牵复方: 声明区;数显查表 主程序区;开启T0 主程序循环区;数码管静态扫描 T0中断函数定时2s改变静态扫描数据缓冲全局变量 思路结束

雅江县19189459323: 我是单片机初学者,请大神帮帮忙
正牵复方: 我觉得是延时的时间太短,每个数之间变化太快,看上去就感觉是乱码了,你把调用延时函数里的200实参,改为50000试试,我也在学单片机,可以的话以后可以相互讨论一下

雅江县19189459323: 求大神为我的单片机代码注释下 -
正牵复方: 先说下,你的程序格式写的太占用空间了,而且看着也不够整洁 已经帮你都注释了,格式也做了调整,部分没有调整,方便添加注释 /***************************************************************************/ #include#define uchar unsigned char #define...

雅江县19189459323: 单片机程序求大神帮忙修改一个点 -
正牵复方: 应该很简单啊,修改把原来的检测到的执行语句修改成zhidao不判断开关 无条件每次执行内 再把检测不到工作两次的语句屏蔽了就好了啊.你用的什么型号单片机?因为你没贴出来程序,也没法说具体怎么改.容需要我帮助你做程序的话可以私信我

雅江县19189459323: 单片机菜鸟,请大神指点一下 谢谢啦~~ -
正牵复方: 最好先要知道18b20的温度读数的格式.高8位左移8位与低位按位或,实际把2个字节拼成一个16位字.18b20读数精度是12位,分辨率16分之1摄氏度,即0.0625,结果送ta是浮点数.ta*1000是把浮点数的结果转成定点数.这个所谓的定点数在单片机这种资源有限的系统中是很常用的一种方式,在不损失精度的前提下可以提高运算速度.

雅江县19189459323: 请求大神帮助,我的程序没有错误,也下载成功了,可是单片机led还是不亮怎么回事 -
正牵复方: 程序没有错误?是指编译没报错还是程序本身设计没问题?如果是前者,那么说明程序设计还是有问题的,如果是后者,那么可能是电路硬件可能出了问题.

雅江县19189459323: 菜鸟跪求单片机大神.. -
正牵复方: 我看不清你的图,但是一般这种情况都吧P1口接到锁存器上 我看你的这个图的锁存器在二极管灯哪儿(键盘上边也有个 我看不清,你自己看下),你仔细看看那个锁存器的型号,然后查查它怎么用,这个锁存器的功能就是为单独使用键盘或二极管灯而设的(因为板子外扩多,所以单片机Io口不够用 就都配了锁存器)

雅江县19189459323: 单片机大神 ,老是要求我做一个基于单片机温湿度气压计protues仿真,谁来帮帮我!!! -
正牵复方: protues仿真 不是很准确的,,同样的程序在实物中可以运行,结果正确,,在protues中可能就不行了, 如果觉得自己的程序正确,,那么建议你把protues里面的元器件换换, 然后再试试,,在数码管这块经常出现这种问题

雅江县19189459323: 求大神帮我编一个简单的单片机中断程序 -
正牵复方: 帮你写一个汇编程序:;51单片机,12MHZ时钟,定时N秒使P1.3,P1.5输出低电平,,,LED串1K电阻接于这两脚与电源之间org 000h sjmp main ;跳主程序org 000bh ajmp ZD10MS ;10毫秒...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网