| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1278 人关注过本帖
标题:版主,耽搁吃饭的时间帮小弟一把吧!
只看楼主 加入收藏
剑兰石竹香
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-12-14
收藏
得分:0 
ORG 0000H      ;初始值
                 LJMP BEGIN     ;长转移到BEGIN
                                 
         ORG 0003H      :外部中断0入口地址
               LJMP WINT0      ;长转移到

         ORG 000BH     ;计数器T0的中断服务程序入口地址
         LJMP COUNTERO ;T0对定时器T1的溢出进行计数

         ORG 0013H     ;外部中断1入口地址
         LJMP WINT1   

         ORG 001BH   ;定时器T1的中断服务程序入口地址
         LJMP TIMER1 ;定时器1输出100ms的时基信号

                 ORG 0030H    外部中断0入口地址
    BEGIN:   CLR IT0     ;设置外部中断为低电平触发
          CLR IT1      ;设置外部中断为低电平触发
         
         MOV TMOD,#16H ;T1定时,工作方式1;T0计数,工作方式2
         MOV TL1,#0B0H ;设置T1定时100ms,作为时基信号
         MOV TH1,#3CH  互相传递   高8位       TMOD;定时器
         MOV TL0,#9CH ;T0对时基信号计数100次
         MOV TH0,#9CH   
         SETB TR1      将TR置1
         SETB TR0
         SETB EA ;打开中断允许
         SETB ET0      允许计数器T0中断,否则禁止中断
         SETB ET1
         SETB EX0       允许外部中断0中断,否则禁止中断
         SETB EX1
         SETB PX0;将外部中断0的优先级设置为最高
        FLAG BIT 00H ;设置10S时间到标志位
         CLR FLAG        清楚标志

                 ;水滴形点亮方案
            
    WATER:   JBC FLAG,FLASH     ;10s时间到,转下一状态      JBC:直接位为1转移并清0该位
             MOV 00H,#08H        硬控位
         MOV R2,#00000000B  ;使到底的灯保称常亮
    START:   MOV R1,00H         ;使亮灯的循环次数逐次减少
         MOV A,#10000000B        
    LOOP:    MOV R3,A
             ORL A,R2            A或R2=A   
                 CPL A               取反A
             MOV P1,A
         LCALL DELAY        延时    LCALL:长子程序调用
         MOV A,R3
         RR A            右移一位,改变显示模式字
         DJNZ R1,LOOP       R1工作寄存器内容减1不为0转移
                 SETB PSW.7         设置标志位PSW.7 =1
           MOV A,R2
         RLC A              RLC:带进位循环左移
         MOV R2,A
         DJNZ 00H,START      DJNZ:直接字节减1不为0转移  
                 MOV P1,#0FFH
                 LCALL DELAY
         SJMP WATER         转移到最上面的 WATER         

               ;拉幕型点亮方案
 
     FLASH: JBC FLAG,FLASH_SLOW   ;10s时间到,转下一状态
            MOV R1,#00H
                MOV DPTR,#TABLE      设数据指针 DPTR指向存储区的首地址TABLE
 标号        LOOP1: MOV A,R1
                MOVC A,@A+DPTR        
                CPL A                进位位取反
                MOV P1,A
                LCALL DELAY          延时
                 INC R1      
                CJNE R1,#08H,LOOP1     CJNE:立即数与寄存器相比,不相等则转移
                SJMP FLASH                     
            
               ;慢闪方案

     FLASH_SLOW:JBC FLAG,FLASH_FAST   ;10s时间到,转下一状态
                MOV A,#0FFH
                MOV P1,A
              LCALL LONG_DELAY
            CPL A
            MOV P1,A
            LCALL LONG_DELAY         
            SJMP FLASH_SLOW

               ;快闪方案
               
    FLASH_FAST: JBC FLAG,WATER      ;10s时间到,回到第一个状态
                MOV A,#0FFH
                MOV P1,A
              LCALL SHORT_DELAY
            CPL A
            MOV P1,A
            LCALL SHORT_DELAY
            JNB FLAG,FLASH_FAST
            SJMP FLASH_FAST
 
      DELAY:    MOV R4,#64H
        LP1:    MOV R5,#64H
        LP2:    NOP
                NOP
                NOP
                NOP
                DJNZ R5,LP2
                DJNZ R4,LP1
                RET

   LONG_DELAY: MOV R4,#0F0H
       LP3:    MOV R5,#0A8H
       LP4:    NOP
               NOP
               NOP
               NOP
               DJNZ R5,LP4
               DJNZ R4,LP3
               RET

SHORT_DELAY: MOV R4,#30H
    LP5:    MOV R5,#80H
    LP6:    NOP
            NOP
            NOP
            NOP
            DJNZ R5,LP6
            DJNZ R4,LP5
            RET

COUNTERO:  SETB FLAG ;计数器T0的中断服务程序,计数器计数到100次,时间达到10S,标志位置1
           RETI

  TIMER1:  SETB P3.4 ;定时器T1的中断服务程序,在计数器T0的计数引脚上产生计数信号
           CLR P3.4
       MOV TL1,#0B0H ;重新装入初始值,T1定时100ms
           MOV TH1,#3CH
       RETI

   WINT1:  MOV A,#10101010B  ;外部中断1,使1、3、5、7只发光二极管以1Hz的频率点亮
           MOV P1,A
           LCALL DELAY500ms
           MOV P1,#0FFH
           LCALL DELAY500ms
           SJMP WINT1

  WINT0:   MOV A,#01010101B  ;外部中断0,使2、4、6、8只发光二极管以10Hz的频率点亮
           MOV P1,A
           LCALL DELAY50ms
           MOV P1,#0FFH
           LCALL DELAY50ms
           SJMP WINT0

             ;延时0.5s子程序
  DELAY500ms: MOV 3FH,#05H  
         LP7: JNB TF1,$
              CLR TF1
              DJNZ 3FH,LP7
              RET

           ;延时0.05s子程序
 DELAY50ms: MOV TH1,#9EH ;重新装入初始值
        MOV TL1,#58H
            JNB TF1,$   
            CLR TF1      
            RET
           

TABLE:DB 81H,0C3H,0E7H,0FFH,0E7H,0C3H,81H,00H ;拉幕型点亮的显示码
           END
2011-12-15 15:20
剑兰石竹香
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-12-14
收藏
得分:0 
题目是上面,我是没有学过汇编的菜鸟,但我们学习的单片机老师又叫用汇编编写!最好的话是哪个好心人帮我重编个程序再注释下,等这次实训考试通过啦我会好好的活跃论坛
2011-12-15 15:24
李尸尸
Rank: 2
等 级:论坛游民
威 望:1
帖 子:30
专家分:77
注 册:2011-11-7
收藏
得分:0 
你看  还是作业......
2011-12-15 22:06
剑兰石竹香
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-12-14
收藏
得分:0 
究竟帮不帮,一句话?男人耿直点。。。。。昨晚当电影群众演员去啦,才上
2011-12-16 16:31
剑兰石竹香
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-12-14
收藏
得分:0 
去你的,垃圾
2011-12-18 23:49
快速回复:版主,耽搁吃饭的时间帮小弟一把吧!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017890 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved