找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1823|回复: 3
收起左侧

求根据这段编程画出proteus仿真图

[复制链接]
ID:418744 发表于 2018-10-31 22:10 | 显示全部楼层 |阅读模式
20黑币
  A_BIT EQU 20H  ;用于存放个位数
                B_BIT EQU 21H  ;用于存放十位数
                TEMP1 EQU 24H  ;用于存放要显示的时间
                ORG 0000H
                AJMP MAIN
                ORG 0003H ;外部中断0入口
                AJMP KEY1
            ORG 0013H ;外部中断1入口
                AJMP KEY2
                ORG 0100H
    ;--------主程序--------        
MAIN:        
                MOV SP. #60    ;定义堆栈区域
                SETB EA        ;总中断允许
                SETB EX0           ;外部中断0允许中断
                SETB EX1           ;外部中断1允许中断
                CLR IT0        ;外部中断0电平触发方式
                CLR IT1                   ;外部中断1电平触发方式
                MOV P1, #00H
                MOV P2, #00H
                SETB P2.0
                MOV TEMP1, #28
                MOV R3, #20    ;定义50ms的循环次数
                MOV TMOD, #01H ;定义定时器0为方式1
                MOV TH0, #3CH  ;置定时器初值为50ms溢出
                MOV TL0, #0B0H
            SETB TR0       ;软件启动T1
    ;---状态1:东西红灯亮,南北绿灯亮,时间(学号后两位加5秒)---
                SETB P1.0       ;P10红灯亮,禁止东西通行
                CLR P1.1      ;P11黄灯灭
                CLR P1.2      ;P12绿灯灭
                CLR P2.1      ;P21红灯灭
                CLR P2.2      ;P22黄灯灭
                SETB  P2.3      ;P23绿灯亮,允许南北通行
STLOP0:
                ACALL DISPLAY  ;调用显示
                DEC TEMP1      ;时间够1s显示时间减1     
                MOV A, TEMP1
                CJNE A, #0, STLOP0 ;若显示时间不为0,则继续循环
                                   ;若显示时间为0,跳到状态2
        ;---状态2:南北绿灯灭,黄灯亮5秒,同时发出报警声(蜂鸣器发声)---
                SETB P1.0       ;P10红灯亮,禁止东西通行
                CLR P1.1      ;P11黄灯灭
                CLR P1.2      ;P12绿灯灭
                CLR P2.1      ;P21红灯灭
                SETB P2.2       ;P22黄灯亮
                CLR P2.3      ;P23绿灯灭,允许南北通行
                MOV TEMP1, #05
STLOP1:
                CLR p2.0      ;发出报警声(蜂鸣器发声)
                ACALL DISPLAY  ;调用显示
                DEC TEMP1      ;时间够1s显示时间减1     
                MOV A, TEMP1
                CJNE A, #0, STLOP1 ;若显示时间不为0,则继续循环
                SETB P2.0
        ;---状态3:南北红灯亮,东西绿灯亮,时间(学号后两位加5秒)---
                CLR P1.0      ;P10红灯灭
                CLR P1.1      ;P11黄灯灭
                SETB P1.2       ;P12绿灯亮,允许东西通行
                SETB P2.1       ;P21红灯亮,禁止南北通行
                CLR P2.2      ;P22黄灯灭
                CLR P2.3      ;P23绿灯灭
                MOV TEMP1, #28
STLOP2:
                ACALL DISPLAY  ;调用显示
                DEC TEMP1     ;时间够1s显示时间减1      
                MOV A, TEMP1
                CJNE A, #0, STLOP2 ;若显示时间不为0,则继续循环
        ;---状态4:东西绿灯灭,黄灯亮5秒,同时发出报警声(蜂鸣器发声)---
                CLR P1.0      ;P10红灯灭
                SETB P1.1       ;P11黄灯亮
                CLR P1.2      ;P12绿灯灭,禁止东西通行
                SETB P2.1       ;P21红灯亮,禁止南北通行
                CLR P2.2      ;P22黄灯灭
                CLR P2.3      ;P23绿灯灭
                MOV TEMP1, #05
STLOP3:
                CLR p2.0     ;发出报警声(蜂鸣器发声)
                ACALL DISPLAY  ;调用显示
                DEC TEMP1      ;时间够1s显示时间减1     
                MOV A, TEMP1
                CJNE A, #0, STLOP3 ;若显示时间不为0,则继续循环
                SETB P2.0
                LJMP MAIN
               
        ;--------显示程序1------
DISPLAY:
                MOV A, TEMP1
                MOV B, #10
                DIV AB
                MOV A_BIT, B ;个位
                MOV B_BIT, A ;十位
                MOV DPTR, #NUMT        
LP1:        MOV A,A_BIT
        MOVC A,@A+DPTR
                MOV P0, A
                CLR P2.4
                ACALL D1MS
                SETB P2.4
                MOV A,B_BIT
        MOVC A,@A+DPTR
                MOV P0, A
                CLR P2.5
                ACALL D1MS
                SETB P2.5
                JBC TF0,LP2 ;查询计数溢出(若溢出则延时了5ms)
                SJMP LP1
LP2:         MOV TH0, #3CH
        MOV TL0, #0B0H
                DJNZ R3, LP1
                MOV R3, #20
                RET

        ;-----按K1键INT0中断服务程序-----
        ;//使东西向绿灯、南北向红灯
KEY1:   CLR P1.0      ;P10红灯灭
                CLR P1.1      ;P11黄灯灭
                SETB P1.2       ;P12绿灯亮,允许东西通行
                SETB P2.1       ;P21红灯亮,禁止南北通行
                CLR P2.2      ;P22黄灯灭
                CLR P2.3      ;P23绿灯灭
                RETI;中断返回
        ;-----按K2键INT1中断服务程序-----
        ;//使南北向绿灯、东西向红灯
KEY2:   SETB P1.0       ;P10红灯亮,禁止东西通行
                CLR P1.1      ;P11黄灯灭
                CLR P1.2      ;P12绿灯灭
                CLR P2.1      ;P21红灯灭
                CLR P2.2      ;P22黄灯灭
                SETB  P2.3      ;P23绿灯亮,允许南北通行
                RETI;中断返回
        ;--------1ms延时子程序---------
D1MS:   MOV R7, #250
            DJNZ R7,$
            RET
        ;--------10ms延时子程序--------        
D10MS:  MOV R6,#20  
D1:     MOV R7,#248
        DJNZ R7,$
        DJNZ R6,D1
        RET
        ;--------字形码表--------
NUMT:   DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
                DB 7FH,6FH
                END

回复

使用道具 举报

ID:149144 发表于 2018-11-2 18:01 | 显示全部楼层
大概这么个东西,看附件
但是有问题, MOV SP, #60 不是  MOV SP. #60
还有那个学号在哪,没整明白
20181102175717.jpg

SEG.rar

17.63 KB, 下载次数: 4

回复

使用道具 举报

ID:418744 发表于 2018-11-3 16:08 | 显示全部楼层
谢谢啊
回复

使用道具 举报

ID:418744 发表于 2018-11-3 16:08 | 显示全部楼层
非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表