打印

交通灯实验

[复制链接]
2297|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzj137|  楼主 | 2007-4-15 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚刚学习单片机~
交通灯实验自己编的不知道对不对!
希望大家知道~!虚心学习~
交通灯实验


Begin:MOV P1,#1EH
      LCALL Delay 1s
      SETB P1.5
      LCALL LED-shine
      SETB P1.4
      CLR P1.3
      CLR P1.2
      LCALL Delay 1s 
      SETB P1.2
      LCALL LED-shine1
      SJMP Begin
LED-shine1: CLR P1.1
           LCALL Delay 1s
           SETB P1.1
           LCALL Delay 1s
           SJMP LED-shine1
           RET
LED-shine: CLR P1.4
           LCALL Delay 1s
           SETB P1.4
           LCALL Delay 1s
           SJMP LED-shine
           RET
Delay 1s:MOV R7,#64H
   LOOP1:MOV R6,#250
         DJNZ R6,$
         DJNZ R7,LOOP1
         RET
Delay 1s:MOV R5,#10
   LOOP2:LCALL Delay 100ms
         DJNZ R5,LOOP2
         RET           
此程序有错~请大家看下面的正确程序,经过试验成功验证!~

相关帖子

沙发
dai_weis| | 2007-4-15 23:27 | 只看该作者

你把它写到芯片里面,或者使用仿真器

或者使用Keil 运行不就知道对不对了,交通灯的延时最好用定时器。

使用特权

评论回复
板凳
tx040316| | 2007-4-17 18:22 | 只看该作者

现在的单片机用汇编还是用C编程好啊?

现在的单片机用汇编还是用C编程好啊?

使用特权

评论回复
地板
zzj137|  楼主 | 2007-4-19 20:19 | 只看该作者

感谢大家的帮助,我自己写的程序,运行成功了!

对!我知道,不过我是刚刚学习单片机。
还是从汇编语言开始的好!哈哈~
谢谢各位大虾的帮助 ?
今天我刚刚在实验室做完试验,程序一次就执行成功了!
相当高兴,很有成就感~虽然只是个开始!
也很高兴!~
上面的程序是个死循环,(经过老师指点之后,恍然大悟!)
正确的程序是:

Begin:MOV P1,#1EH
      LCALL Delay 1s 
      SETB P1.5
      LCALL LED-shine
      SETB P1.4
      CLR P1.3
      SETB P1.0
      CLR P1.2
      LCALL Delay 1s 
      SETB P1.2
      LCALL LED-shine1
      SJMP Begin
LED-shine1:MOV R0,#04H
  LOOP1:  CLR P1.1
           LCALL Delay 1s
           SETB P1.1
           LCALL Delay 1s
           DJNZ R0,LOOP1
           RET
LED-shine: MOV R1,#04H
   LOOP2: CLR P1.4
           LCALL Delay 1s
           SETB P1.4
           LCALL Delay 1s
           DJNZ R1,LOOP2
           RET
Delay100ms:MOV R7,#64H
   LOOP3:MOV R6,#250
         DJNZ R6,$
         DJNZ R7,LOOP3
         RET
Delay 1s:MOV R5,#10
   LOOP4:CALL Delay 100ms
         DJNZ R5,LOOP4
         RET           
 
程序执行过程:
两组红黄绿灯~1.红。黄。绿。
             2.红。黄。绿。
初识状态:1。红灯亮2。绿灯亮。
         1s钟后2。组 绿灯熄灭,黄灯闪烁四次,黄灯灭红灯亮。同时1。组红灯灭绿灯亮。
         1s钟后1组绿灯灭,黄灯闪烁四次,黄灯灭,红灯亮。同时2。组绿灯亮
         然后程序循环执行!就完成模拟 交通灯试验了~
感谢大家的帮助,以后我还会遇到很多问题的,希望大家帮助~
谢谢!

使用特权

评论回复
5
古董| | 2007-4-22 10:41 | 只看该作者

我也做了一个,有紧急情况处理

    ;交通灯
    ORG    0000H
    LJMP    BEGIN
    ORG    0100H
BEGIN:    AJMP    MAIN
    ORG    0013H
    AJMP    INT_1    
MAIN:    MOV    SP,#60H
    MOV    TMOD,#01H    ;定时器工作方式
    SETB    IT1    ;中断设置,外部中断1
    SETB    EX1
    SETB    EA
    MOV    DPTR,#TAB
EW_R    BIT    P1.0
EW_Y    BIT    P1.1
EW_G    BIT    P1.2
SN_R    BIT    P1.3
SN_Y    BIT    P1.4
SN_G    BIT    P1.5
    ;--------起始--------
    MOV    P1,#0FFH
    CLR    EW_R
    CLR    SN_R
    ACALL    DEALY1
    ;-------1-----------
LOOP:    MOV    P1,#0FFH
    CLR    EW_R
    CLR    SN_G
    MOV    R1,#10    ;延时10s
    ACALL    DISP
    MOV    R2,#5    ;绿灯闪5次
LOOP0:    CPL    SN_G
    ACALL    DEALY0
    DJNZ    R2,LOOP0
    CLR    SN_Y
    ACALL    DEALY1
    ;--------2--------
    MOV    P1,#0FFH
    CLR    EW_G
    CLR    SN_R
    MOV    R1,#10    ;延时10S
    ACALL    DISP
    MOV    R2,#5
LOOP1:    CPL    EW_G
    ACALL    DEALY0
    DJNZ    R2,LOOP1
    CLR    EW_Y
    ACALL    DEALY1    
    SJMP    LOOP
    ;-------延时子程序---------
DEALY0:    MOV    R0,#10    ;延时为500ms
    SJMP    TIMER
DEALY1:    MOV    R0,#20    ;延时为1s
TIMER:    MOV    TH0,#3CH
    MOV    TL0,#0B0H
    SETB    TR0
**:    JNB    TF0,$
    DJNZ    R0,NEXT
    SJMP    STOP
NEXT:    MOV    TH0,#3CH
    MOV    TL0,#0B0H
    JBC     TF0,**
STOP:    NOP    
    RET
    ;---------显示程序-----------------
DISP:    NOP
LOOPD:    MOV    A,R1
    MOVC    A,@A+DPTR
    MOV    P0,A
    ACALL    DEALY1
    DJNZ    R1,LOOPD
    MOV    A,R1
    MOVC    A,@A+DPTR
    MOV    P0,A
    ACALL    DEALY1
    RET        
    ;---------紧急情况-------------
        ;-----------现场保护----------
INT_1:    MOV    30H,TCON
    MOV    31H,TL0
    MOV    32H,TH0
    MOV    33H,R0
    MOV    34H,R1
    MOV    35H,R2
    MOV    36H,P1
    MOV    37H,A
            ;----------中断服务程序-----------
    CLR    EA
    MOV    P1,#0FFH
    CLR    EW_R
    CLR    SN_R
    MOV    R1,#10
    ACALL    DISP
    MOV    R2,#5
LOOP2:    CPL    EW_R
    CPL    SN_R
    ACALL    DEALY0
    DJNZ    R2,LOOP2
        ;-----------恢复现场----------------
    SETB    EA
    MOV    TCON,30H
    MOV    TL0,31H
    MOV    TH0,32H
    MOV    R0,33H
    MOV    R1,34H
    MOV    R2,35H
    MOV    P1,36H
    MOV    A,37H
            ;----------返回----------------
    RETI
    ;----------------字形码-------------
TAB:    DB    82H,0E7H,91H,0C1H,0E4H,0C8H,88H,0E3H,80H,0C0H,0A0H        
    END

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

45

帖子

0

粉丝