打印

经典的单片机程序 单片机实习一定用到

[复制链接]
2370|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wsjhy1|  楼主 | 2010-3-25 12:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
D1  BIT P3.0
D2  BIT P3.2
D3  BIT P3.3
DBUF EQU 35H
TEMP EQU 50H
DIN BIT P3.4
CLK BIT P3.5
ORG 0
LJMP START
ORG  000BH
中断程序
T0INT:
       PUSH   PSW
       MOV    TH0,#0DAH
       MOV    TL0,#80H
       DJNZ    R7,EXIT
       MOV     C,D2
       JC      QS       ;选择速度
MS:   MOV     R7,#0F8H     ; 慢
        MOV DBUF+3,#4
       MOV DBUF+2,#1
       LJMP QQQ1
FX:    MOV     C,D3
       JC      SHX              ;选择类型
DX:    CLR     C
       MOV     C,D1         
       JC      ZY1
YY1:                            ;右移
       MOV     A,21H
       RR        A               
       MOV     21H,A
       MOV     P1,A
       MOV DBUF+1,#2
       MOV DBUF+0,#2
       LJMP QQQ2
       LJMP    EXIT     
ZY1:                            ;左移
       MOV     A,20H
       RL        A
       MOV     20H,A
       MOV     P1,A
       MOV DBUF+1,#4
       MOV DBUF+0,#4
       LJMP QQQ2
       LJMP    EXIT
SHX:                        ;循环交替
       MOV     A,30H
       RL      A
       MOV     30H,A
       MOV     A,31H
       RR      A
       MOV     31H,A
       ANL     A,30H
       MOV     P1,A
       MOV     DBUF+1,#4
       MOV     DBUF+0,#2
       LJMP    QQQ2
EXIT:
       POP      PSW      
       RETI
QS:    MOV     R7,#64H    ;快
         MOV DBUF+3,#0
         MOV DBUF+2,#1
; 数码管 1    调用 高速/  低速      
QQQ1:
DISP:
      MOV R0,#DBUF
      MOV R1,#TEMP
      MOV R2,#4
DP10:
      MOV DPTR,#SEGTAB
      MOV A, @R0
      MOVC A,@A+DPTR
      MOV @R1,A
      INC R0
      INC R1
      DJNZ R2,DP10
      MOV  R0,#TEMP
      MOV R1,#4
DP12:
      MOV R2,#8
      MOV A,@R0
DP13:
      RLC A
      MOV DIN,C
      CLR CLK
      SETB CLK
      DJNZ R2,DP13
      INC R0
      DJNZ R1,DP12
SEGTAB:
      DB   76H,40H,77H,6DH,38H
      LJMP    FX            
; 数码管2 调用 左移/右移/循环交替
QQQ2:
DISP2:
      MOV R0,#DBUF
      MOV R1,#TEMP
      MOV R2,#4
DP102:
      MOV DPTR,#SEGTAB2
      MOV A, @R0
      MOVC A,@A+DPTR
      MOV @R1,A
      INC R0
      INC R1
      DJNZ R2,DP102
      MOV  R0,#TEMP
      MOV R1,#4
DP122:
      MOV R2,#8
      MOV A,@R0
DP132:
      RLC A
      MOV DIN,C
      CLR CLK
      SETB CLK
      DJNZ R2,DP132
      INC R0
      DJNZ R1,DP122
   
SEGTAB2:
      DB   76H,40H,77H,6DH,38H
      LJMP    EXIT            
;主程序  给初值  
START:
       MOV    TMOD,#01H
       MOV    TH0,#0DAH
       MOV    TL0,#80H
       MOV     IE,#82H
       SETB    TR0
       MOV     20H,#0FEH
       MOV     21H,#7FH
       MOV     30H,#0FEH            
       MOV     31H,#7FH
LOOP:
       LJMP    LOOP        ;延时程序
END

相关帖子

沙发
wsjhy1|  楼主 | 2010-3-26 21:52 | 只看该作者
主要是用在闪烁变换发光管 控制器上

使用特权

评论回复
板凳
tj_zhaozq| | 2010-3-28 14:59 | 只看该作者
本帖最后由 tj_zhaozq 于 2010-3-28 15:00 编辑

都快22世纪了。还用ASM做例程。呵。。。
现在的KEIL上都可以不用这样写汇编了。
Timer0_Int:               ;可以像C一样,还可以写的更长
       PUSH   PSW
       MOV    TH0,#0xDA;现在可以这么用了。不用那么搞了。
       MOV    TL0,#0x80
       DJNZ    R7,EXIT
       MOV     C,D2
       JC      QS       ;选择速度
MS:   MOV     R7,#0xF8     ; 慢

使用特权

评论回复
地板
wsjhy1|  楼主 | 2010-3-29 10:17 | 只看该作者
谢谢你的提示 不过我的程序不简单是调节速度是,速度,方向,循环交替。3 种,还加相应的数码管显示
里面有很多嵌套啊

使用特权

评论回复
5
nighn| | 2010-3-29 17:13 | 只看该作者
顶!顶!顶!

使用特权

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

本版积分规则

3

主题

40

帖子

1

粉丝