找回密码
 立即注册

QQ登录

只需一步,快速开始

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

急求单片机音乐流水灯汇编程序!!!!!!!

[复制链接]
跳转到指定楼层
楼主
ID:24286 发表于 2010-6-3 17:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 

 

 

 

 

谢谢大家了!!!!!!!!!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:23004 发表于 2010-6-3 20:02 | 只看该作者

;报警声程序

;1.蜂鸣器和继电器 共用p2.2 ,跳线J5设置到23端选中蜂鸣器

 

 

CODE_SEG SEGMENT CODE 
DATA_SEG SEGMENT DATA
STACK_SEG SEGMENT IDATA

SPK BIT P2.2

 RSEG DATA_SEG
FRQ:   DS   1
TMP:   DS   1

 RSEG STACK_SEG
STACK: DS 20

;==========================
CSEG AT 00000H
 LJMP MAIN


CSEG AT 0000BH
 LJMP TIMER0
 
 
 
;==========================

 RSEG CODE_SEG
MAIN:
 USING 0
 
 MOV SP,#(STACK-1)
 
 MOV   TMOD,#01H
 CLR   A
 MOV   FRQ,A
 MOV   TH0,A
 MOV   TL0,#0FFH
 SETB  TR0
 MOV   IE,#082H
 
MAIN_LP:

 INC   FRQ
 
 MOV   R7,#04  ; 
 LCALL DELAYMS

 SJMP  MAIN_LP
 
; END OF main

;==========================
TIMER0:
 MOV   TH0,#0FEH
 MOV   TL0,frq
 CPL   SPK
 RETI  
; END OF TIMER0


;==========================
DELAYMS:
; 延时子程序
; 传入参数:R7 --- 延时值(MS) 
; 返回值:无

 MOV A,R7
 JZ END_DLYMS 
DLY_LP1:
 MOV R6,#185
DLY_LP2:
 NOP
 NOP
 NOP
 DJNZ R6,DLY_LP2
 DJNZ R7,DLY_LP1

END_DLYMS:
 RET 

 END

回复

使用道具 举报

板凳
ID:23004 发表于 2010-6-3 20:04 | 只看该作者
;流水灯程序

PORT EQU  P1
    ORG    0000H                ;主程序开始地址0000H
             AJMP   START                ;跳转到地址MAIN处执行
             ORG    0030H                ;主程序地址0030H
START:       CALL    LEFT                ;设定左移次数,存放于寄存器R5
             CALL   RIGHT                ;将数据FFH赋值给A
             JMP     START                ;跳转到START
            
             ;以下是左移子程序
LEFT:        PUSH    PSW                 ;将PSW压入堆栈 
             SETB    RS1                 ;将RS1置1,同下一条指令一起
                                         ;选定寄存器组2
             CLR     RS0                 ;将RS0置0
             MOV    R4,#8                ;将数据8赋值给R4
             MOV    A,#0FFH              ;将数据FFH赋值给A
             CLR     C                    ;将进位位C清0
NEXT1:       RLC     A                   ;带进位左移

             MOV    PORT,A                ;将A中数据赋给P2
             CALL    LATER              ;调用延时程序
             DJNZ   R4,NEXT1            ;R4=R4-1,R4≠0时,转到NEXT1 
             POP     PSW                 ;出栈到PSW
             RET                         ;子程序结束,返回主程序
             ;以下是右移子程序
RIGHT:       PUSH    PSW                 ;PSW压入堆栈
             SETB    RS1                 ;将RS1置1,同下一条指令一起选定
                                         ;寄存器组2
             SETB    RS0                 ;将RS0置1
             MOV    R4,#8                ;将数据8赋值给R4
             MOV    A,#0FFH              ;将数据FFH赋值给A
             CLR     C                   ;将进位为清0
NEXT2:       RRC     A                   ;带进位位右移A
             MOV    P1,A                 ;将A中数据赋给P2
             CALL    LATER               ;调用延时程序
             DJNZ   R4,NEXT2             ;R4=R4-1,R4≠0时,转到NEXT2
             POP     PSW                 ;出栈到PSW
             RET                         ;子程序结束,返回主程序
             ;以下是延时子程序
LATER:       MOV   R7,#0FFH             ;
AD1:         MOV   R6,#0A0H             ;
AD2:         DJNZ   R6,AD2              ;
             DJNZ   R7,AD1              ;
             RET                        ; 
             END                        


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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