找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7752|回复: 5
打印 上一主题 下一主题
收起左侧

求救!!!!!!用AT89C51实现28路灯光控制

[复制链接]
跳转到指定楼层
楼主
ID:10355 发表于 2009-3-27 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上找的这段程序好大问题的...
哪位高手帮忙看下哦...
江湖救急吖...
程序清单
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:10355 发表于 2009-3-27 13:26 | 只看该作者
 

地址 机器码 指令 注释

0000 02003B LJMP 003B ;跳转至003BH

003B 758000 MOV P0#00H ;初始化

003E 75900F MOV P1#0FH

0041 75A000 MOV P2#00H

0044 75B000 MOV P3#00H

0047 1203CC LCALL 03CC ;调“嘀嗒”声子程序

004A 758007 MOV P0#07H ;点亮VD1VD3作默认指示

004D 20910F JB P1.1005F ;判断SB2状态

0050 1203F7 LCALL 03F7 ;延时去抖动

0053 209109 JB P1.1005F

0056 1203CC LCALL 03CC ;确认并应答

0059 3091FA JNB P1.10056 ;等待SB2释放

005C 020100 LCALL 0100 ;默认进入第一种选择,2灯流动

005F 2090EB JNB P1.0004D ;判断SB1状态

0062 1203E7 LJLP 03F7 ;去抖动

0065 2090E5 JB P1.0004D

0068 1203CC LCALL 00CC ;确认并应答

006B 3091FA JNB P1.10068 ;等待SB1释放

006E 758003 MOV P0#03H ;点亮VD1VD2作第二种选择指示

0071 20910F JB P1.10083 ;判断SB2状态

0074 1203F7 LCALL 00F7 ;去抖动

0077 209109 JB P1.10083

007A 1203CC LCALL 03CC ;确认并应答

007D 3091FA JNB P1.1007A ;等待SB2释放

0080 020200 LJMP 0200 ;进入第二种选择,4灯流动

0083 2090EB JB P1.00071 ;判断SB1状态

0086 1203F7 LCALL 03F7 ;去抖动

0089 2090E5 JB P1.00071

008C 1203CC LCALL 03CC ;确认并应答

008F 3091FA JNB P1.1008C ;等待SB1释放

0092 758001 FOV P0#01H ;点亮VD1作第一种选择指示

0095 02004D LJMP 004D ;返回判断SB2状态

0100 758003 MOV P0#03H ;点亮VD1VD2

0103 1203EF LCALL 03EF ;延时0.1S

0106 75800C MOV P0#0CH ;熄灭VD1VD2,点亮VD3VD4

0109 1203EF LCALL 03EF ;延时0.1S

010C 758030 MOV P0#30H ;点亮VD5VD6

010F 1203EF LCALL 03EF ;延时0.1S

0112 7580C0 MOV P0#C0H ;点亮VD7VD8

0115 1203EF LCALL 03EF ;延时0.1S

0118 758000 MOV P0#00H ;熄灭VD7VD8

011B 75A0C0 MOV P2#C0H ;点亮VD9VD10继续流动

011E 1203EF LCALL 03EF

0121 75A030 MOV P2#30H

0124 1203EF LCALL 03EF

0127 75A00C MOV P2#0CH

012A 1203EF LCALL 03EF

012D 75A003 MOV P2#03H

0130 1203EF LCALL 03EF

0133 75A000 MOV P2#00H

0136 75B0C0 MOV P3#C0H ;点亮VD17VD18继续流动

0139 1203EF LCALL 03EF

013C 75B030 MOV P3#30H

013F 1203EF LCALL 03EF

0142 75B00C MOV P3#0CH

0145 1203EF LCALL 03EF

0148 75B003 MOV P3#03H

014B 1203EF LCALL 03EF

014E 75B000 MOV P3#00H

0151 7590CF MOV P1#CFH ;点亮VD25VD26继续流动

0154 1203EF LCALL 03EF

0157 75903F MOV P1#3FH

015A 1203EF LCALL 03EF

015D 75900F MOV P1#0FH

0160 020100 LJMP 0100 ;返回点亮VD1VD2循环流动

0200 75800F MOV P0#0FH ;点亮VD1VD4

0203 1203CC LCALL 03CC ;调“嘀嗒”声延时0.2S

0206 7580F0 MOV P0#F0H ;继续4灯流动

0209 1203CC LCALL 03CC

020C 758000 MOV P0#00H

020F 75A0F0 MOV P2#F0H

0212 1203CC LCALL 03CC

0215 75A00F MOV P2#0FH

0218 1203CC LCALL 03CC

021B 75A000 MOV P2#00H

021E 75B0F0 MOV P3#F0H

0221 1203CC LCALL 03CC

0224 75B00F MOV P3#0FH

0227 1203CC LCALL 03CC

022A 75B000 MOV P3#00H

022C 7590FF MOV P1#FFH

0230 1203CC LCALL 03CC

0233 75900F MOV P1#0FH

0236 020200 LJMP 0200 ;返回点亮VD1VD4,循环4灯流动

03CC 7B64 MOV R3#64H ;设置脉冲周期数100

03CE D292 SETB P1.2 ;使P1.2呈高电位

03DD 1203F7 LCALL 03F7 ;延时0.5ms

03D3 C292 CLR P1.2 ;使P1.2呈低电位

03D5 1203F7 LCALL 03F7 ;延时0.5ms

03D8 DBF4 DJNZ R303CE ;循环变换P1.2的高低电位

03DA 7B32 MOV R3#32H ;设置脉冲周期数50

03DC D292 SETB P1.2 ;使P1.2呈高电位

03DE 1203F7 LCALL 03F7 ;延时0.5ms

03E1 1203F7 LCALL 03F7 ;延时0.5ms

03E4 C292 CLR P1.2 ;使P1.2呈低电位

03E6 1203F7 LCALL 03F7 ;延时0.5ms

03E9 1203F7 LCALL 03F7 ;延时0.5ms

03EC DBEE DJNZ R3,03DC ;延回循环改变P1.2的电位

03EE 22 RET ;子程序返回

03EF 7BC8 MOV R3#C8H ;置延时常数200

03F1 1203F7 LCALL 03F7 ;延时0.5ms

03F4 DBFB DJNZ P303F1 ;循环调用调时程序

03F6 22 RET ;子程序返回

03F7 7A32 MOV R2#32H ;置延时常数

03F9 00 NOP ;空操作

03FA 00 NOP

03FB 00 NOP

03FC 00 NOP

03FD DAFA DJNZ R203F9 ;循环空操作

03FF 22 RET ;子程序返回

回复

使用道具 举报

板凳
ID:10355 发表于 2009-3-27 13:27 | 只看该作者
回复

使用道具 举报

地板
ID:2006 发表于 2009-3-28 16:50 | 只看该作者
太乱了,错漏太多,你把硬件原理图贴上来我看看
回复

使用道具 举报

5#
ID:11305 发表于 2009-4-16 13:19 | 只看该作者
看看
回复

使用道具 举报

6#
ID:153199 发表于 2016-12-21 08:52 | 只看该作者
错误太多,结合实现的功能
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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