找回密码
 立即注册

QQ登录

只需一步,快速开始

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

发一个单片机汇编写的LED呼吸灯代码

[复制链接]
跳转到指定楼层
楼主
ID:359322 发表于 2018-11-12 09:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
汇编写的LED呼吸灯   原码   能运行的

单片机源程序如下:
  1. ;//=============================================
  2. ; Chip Register Define
  3. ;; Register R
  4.                       INDF                EQU                0x00
  5.                                         TMR0                EQU                0x01
  6.                                         PCL                  EQU                0x02               
  7.                             STATUS        EQU                0x03                           
  8.                              C_B                EQU                0
  9.                              DC_B                EQU                1
  10.                              Z_B                EQU                2
  11.                              PD_B                EQU                3
  12.                              TO_B          EQU                4         
  13.                                             
  14.                                         FSR                        EQU                0x04
  15.                                         PA                        EQU                0x05
  16.                                         PB                  EQU                0x06
  17.                                                 PB0_B        = 0
  18.                                                 PB1_B        = 1
  19.                                                 PB2_B        = 2
  20.                                                 PB3_B        = 3                                
  21.                       PCON                EQU                0x08
  22.                                         BWUCON        EQU                0x09
  23.                                         PCHBUF        EQU                0x0A
  24.                                         ABPLCON        EQU                0x0B
  25.                                         BPHCON        EQU                0x0C
  26.                
  27.                                         INTE                EQU                0x0E
  28.                                                 T0IE        EQU                0
  29.                                                 PBIE        EQU                1
  30.                               INTIE        EQU                2
  31.                               T1IE        EQU                3
  32.                               WDTIE        EQU                6
  33.                         
  34.                       INTF                EQU                0x0F
  35.                               T0IF        EQU                0
  36.                               PBIF        EQU                1
  37.                               INTIF        EQU                2
  38.                               T1IF        EQU                3
  39.                               WDTIF        EQU                6

  40. ;; Register F
  41.                                         PS0CV                EQU                0x0A
  42.                                         BOBCON        EQU                0x0C               
  43.                                         PCON1                EQU                0x0F
  44.                                           T0EN        EQU                0
  45.                               GIE          EQU                7
  46.                
  47. ;; Register S
  48.                             TMR1                EQU                0x00               
  49.                       T1CR1                EQU                0x01
  50.                                                 T1EN        EQU                0
  51.                                                 T1RL        EQU                1
  52.                                                 T1OS        EQU                2
  53.                         
  54.                                                 PWM1OAL        EQU                6
  55.                                                 PWM1OEN        EQU                7
  56.                         
  57.                                    T1CR2                EQU                0x02
  58.                                                 PS1EN        EQU                3
  59.                                                 T1CE        EQU                4
  60.                                                 T1CS        EQU                5
  61.                         
  62.                                         PWM1DUTY EQU        0x03
  63.                                         PS1CV                EQU                0x04
  64.                                         BZ1CR                EQU                0x05
  65.                
  66.                                         IRCR                EQU                0x06
  67.                                                 IREN                EQU        0
  68.                                                 IRF57K                EQU        1
  69.                                                 IRCSEL                EQU        2
  70.                                                 IROSC358M        EQU        7
  71.                         
  72.                                         TBHP                EQU                0x07
  73.                                         TBHD                EQU                0x08
  74.                
  75.                                         OSCCR                EQU                0x0f
  76.                                                 SELHSC        EQU                0
  77.                                                 STPHOSC        EQU                1
  78.                                                 OPMD0        EQU                2
  79.                                                 OPMD1        EQU                3

  80.                                         f                          EQU                1
  81.                                         R                          EQU                1
  82.                                         W                          EQU                0
  83.                                         A                          EQU                0
  84. ;//======================================================               
  85. ;; User Register Define (0x10~0x3F)
  86.                                          R_ACC_Buf            EQU                0x10
  87.                 R_Status_Buf        EQU                0x11         
  88.           CycleCnt1     EQU   0x12
  89.           DutyUpCnt1    EQU   0X13   ;positive
  90.           DutyPosiCnt1  EQU   0X14   ;positive
  91.           DutyNegaCnt1  EQU   0X15   ;negative
  92.           DutyDownCnt1  EQU   0X16   ;negative
  93.          
  94.           DutyUpCnt     EQU   0X17   ;positive
  95.           DutyPosiCnt   EQU   0X18   ;positive
  96.           DutyNegaCnt   EQU   0X19   ;negative
  97.           DutyDownCnt   EQU   0X1A   ;negative                          
  98.           CycleCnt      EQU   0x1B                                       

  99.                                         TimerCnt0                  EQU                0x1C
  100.           TimerCnt1                  EQU                0x1D
  101.                                         Flag_Time                  EQU                0x1E
  102.                                         Flag_1_1ms_B  = 1
  103.                                   Flag_1ms_B                = 3
  104.                                   Flag_20ms_B          = 4
  105.                                   Flag_500ms_B        = 5
  106.                                   Flag_Slp_ms_B        = 6
  107.                                   Flag_100us_B  = 7
  108.                                        
  109.                                         Flag_Sys1                  EQU                0x1F
  110.                                   Red1Flg       = 0
  111.                                   Green1Flg     = 1
  112.           HiLow1Flag    = 2
  113.           Blue1Flg      = 3
  114.                                    
  115.                                         Flag_Sys                  EQU                0x20  
  116.                                   HiLowFlag     = 0          ;//PWM里面高低电平
  117.                                   RotatFlg      = 1          ;//向上向下变
  118.                                   RedFlg        = 2
  119.                                   GreenFlg      = 3        
  120.                                   BlueFlg       = 4                  
  121.           RotatCnt                  EQU                0x21
  122.           LedCnt1                    EQU                0x22
  123.           LedCnt2                   EQU                0x23
  124. ;//==========================================================
  125.                       ORG            0x00
  126. Reset:    GOTO        Main_Prog
  127. ;//==========================================================
  128. ;//ISR Vector
  129.                       ORG            0x08
  130. ISR_Prog:
  131.                                         MOVAR                R_ACC_Buf                            ;; 保留 ACC 及 Status 的状态值
  132.                                         SWAPR                R_ACC_Buf, R
  133.                                         SWAPR                STATUS, A
  134.                                         MOVAR                R_Status_Buf
  135.                         
  136.                                         BTRSS                INTF, T0IF
  137.                                         GOTO                ISR_End
  138.                                         MOVIA                0xFE
  139.                                         MOVAR                INTF                                ;; CLR TIMER0 FLAG
  140.                                         BSR                  Flag_Time, Flag_100us_B                                       
  141.           //MOVIA                0xFE
  142.           //XORAR   PB,R
  143.           MOVIA                165               ;; 165=200US 216=100US
  144.                                         MOVAR                TMR0        
  145.                                        
  146. ISR_End:  SWAPR                R_Status_Buf, A                ;; 取回 ACC        及 Status 的状态值
  147.                                         MOVAR                STATUS
  148.                                         SWAPR                R_ACC_Buf, A
  149.                                         RETIE
  150. ;//==========================================================
  151. ;//Main Program
  152. Main_Prog:
  153.                                         LCALL                F_ClearAllRAM
  154.                                         LCALL                F_IOInit
  155.                                         LCALL   F_Timer0Set
  156.                                         MOVIA                0x01                                  ;; ENABLE T0/T1 Interrupt
  157.                                         MOVAR                INTE                                       
  158.                                         ENI                                                                    ;; Enable Goble Interrupt
  159.                  
  160.           BSR     Flag_Sys,HiLowFlag
  161.           BSR     Flag_Sys1,HiLow1Flag
  162.           BSR     Flag_Sys,RotatFlg        
  163.           MOVIA   1
  164.           MOVAR   DutyPosiCnt
  165.           MOVIA   1
  166.           MOVAR   DutyPosiCnt1
  167.           MOVIA   30
  168.           MOVAR   DutyNegaCnt
  169.           MOVIA   30
  170.           MOVAR   DutyNegaCnt1
  171.           BSR     Flag_Sys,RedFlg  ;RB1
  172.           BSR     Flag_Sys,GreenFlg;RB3
  173.           BSR     Flag_Sys,BlueFlg ;RB2
  174.           BCR     Flag_Sys,RotatFlg                  
  175. Main_Start:
  176.                                         CLRWDT
  177.           LCALL   SystemTick        
  178.           LCALL   BreathLed
  179.           LCALL   FallLed
  180.           LCALL   RiseLed                  
  181.                                         GOTO                Main_Start     
  182. ;//===========================================
  183. BreathLed:BTRSS   Flag_Sys,RotatFlg
  184.                 GOTO    BreaEnd
  185.                 BCR     Flag_Sys,RotatFlg
  186.                 INCR    RotatCnt,1               
  187.                                        
  188.                 MOVIA   1
  189.           SUBAR   RotatCnt,A
  190.           BTRSC   STATUS,Z_B
  191.           GOTO    BreaLR1
  192.          
  193.           MOVIA   2
  194.           SUBAR   RotatCnt,A
  195.           BTRSC   STATUS,Z_B
  196.           GOTO    BreaLG1
  197.          
  198.           MOVIA   3
  199.           SUBAR   RotatCnt,A
  200.           BTRSC   STATUS,Z_B
  201.           GOTO    BreaLB1
  202.          
  203.           MOVIA   0
  204.           MOVAR   RotatCnt
  205.           GOTO    BreaLR1
  206.          
  207. BreaLR1:  BSR     Flag_Sys,RedFlg  
  208.                 BCR     Flag_Sys,GreenFlg
  209.                 BCR     Flag_Sys,BlueFlg
  210.                
  211.                 BCR     Flag_Sys1,Red1Flg
  212.                 BSR     Flag_Sys1,Green1Flg
  213.                 BCR     Flag_Sys1,Blue1Flg
  214.                 GOTO    BreaEnd        
  215.                         
  216. BreaLG1:  BCR     Flag_Sys,RedFlg
  217.                 BSR     Flag_Sys,GreenFlg                       
  218.                 BCR     Flag_Sys,BlueFlg
  219.                
  220.                 BSR     Flag_Sys1,Red1Flg
  221.                 BCR     Flag_Sys1,Green1Flg
  222.                 BCR     Flag_Sys,BlueFlg
  223.                 GOTO    BreaEnd
  224.                
  225. BreaLB1:  BCR     Flag_Sys,RedFlg  
  226.                 BCR     Flag_Sys,GreenFlg
  227.                 BSR     Flag_Sys,BlueFlg
  228.                         
  229.                 BSR     Flag_Sys1,Red1Flg
  230.                 BCR     Flag_Sys1,Green1Flg
  231.                 BCR     Flag_Sys1,Blue1Flg
  232. BreaEnd:  RET                                                  
  233. ;//=================================================================
  234. ;//Fall   0
  235. FallLed:  BTRSC   Flag_Sys,RotatFlg        
  236.                 GOTO    RiseEnd
  237.                 BTRSS   Flag_Sys,HiLowFlag
  238.                 GOTO    Fall2
  239. Fall1:    BTRSS   Flag_Time,Flag_1ms_B
  240.           GOTO    FallEnd         
  241.           BCR     Flag_Time,Flag_1ms_B                                                  
  242.                                         INCR    DutyUpCnt,1
  243.                                        
  244.                                         BTRSC   Flag_Sys,RedFlg
  245.                                         GOTO    FallRED1
  246.                                         BTRSC   Flag_Sys,GreenFlg
  247.                                         GOTO    FallGREEN1
  248.                                         BTRSC   Flag_Sys,BlueFlg
  249.                                         GOTO    FallBLUE1
  250.                                         GOTO    FallEnd

  251. FallRED1: BCR     PB,PB1_B
  252.                 GOTO    Fall11                                             
  253. FallGREEN1:
  254.                 BCR     PB,PB3_B
  255.                 GOTO    Fall11
  256. FallBLUE1:BCR     PB,PB2_B
  257.                                                                         
  258. Fall11:                MOVR    DutyPosiCnt,0
  259.           SUBAR   DutyUpCnt,0
  260.           BTRSS   STATUS,C_B
  261.           GOTO    FallEnd
  262.           CLRR    DutyUpCnt
  263.                                        
  264.                                         BCR     Flag_Sys,HiLowFlag                                       
  265.                                         GOTO    FallEnd                                

  266. Fall2:    BTRSS   Flag_Time,Flag_1ms_B
  267.           GOTO    FallEnd         
  268.           BCR     Flag_Time,Flag_1ms_B                                                  
  269.                                         INCR    DutyDownCnt,1
  270.                                        
  271.                                         BTRSC   Flag_Sys,RedFlg
  272.                                         GOTO    FallRED2
  273.                                         BTRSC   Flag_Sys,GreenFlg
  274.                                         GOTO    FallGREEN2
  275.                                         BTRSC   Flag_Sys,BlueFlg
  276.                                         GOTO    FallBLUE2                                       
  277.                                         GOTO    FallEnd
  278.                                        
  279. FallRED2: BSR     PB,PB1_B
  280.                 GOTO    Fall12               
  281. FallGREEN2:        
  282.                 BSR     PB,PB3_B
  283.                 GOTO    Fall12      
  284. FallBLUE2:BSR     PB,PB2_B        
  285. Fall12:          MOVR    DutyNegaCnt,0
  286.           SUBAR   DutyDownCnt,0
  287.           BTRSS   STATUS,C_B
  288.           GOTO    FallEnd
  289.           CLRR    DutyDownCnt                                                                                                                          
  290.                                         BSR     Flag_Sys,HiLowFlag                        ;//one cycle is 20ms
  291.                                                                                        
  292.                                         INCR    CycleCnt,1
  293.                                         MOVIA   5
  294.           SUBAR   CycleCnt,A
  295.           BTRSS   STATUS,C_B
  296.           GOTO    FallEnd
  297.           CLRR    CycleCnt
  298.          
  299.          
  300.           INCR    DutyPosiCnt,1
  301.           DECR    DutyNegaCnt,1
  302.          
  303.           MOVIA   30//62
  304.           SUBAR   DutyPosiCnt,A
  305.           BTRSS   STATUS,C_B
  306.           GOTO    FallEnd
  307.          
  308.           MOVIA   1
  309.           MOVAR   DutyPosiCnt
  310.           MOVIA   30//62
  311.           MOVAR   DutyNegaCnt
  312.                                         BSR     Flag_Sys,RotatFlg                                                                                                                        
  313. FallEnd:  RET              
  314. ;//=================================================================
  315. ;//RISE   1
  316. RiseLed:  BTRSS   Flag_Sys,RotatFlg        
  317.                 GOTO    RiseEnd
  318.                 BTRSS   Flag_Sys1,HiLow1Flag
  319.                 GOTO    Rise2
  320. Rise1:    BTRSS   Flag_Time,Flag_1_1ms_B
  321.           GOTO    RiseEnd         
  322.           BCR     Flag_Time,Flag_1_1ms_B                                                  
  323.                                         INCR    DutyUpCnt1,1
  324.                                        
  325.                                         BTRSC   Flag_Sys1,Red1Flg
  326.                                         GOTO    RiseRED1
  327.                                         BTRSC   Flag_Sys1,Green1Flg
  328.                                         GOTO    RiseGREEN1
  329.                                         BTRSC   Flag_Sys1,Blue1Flg
  330.                                         GOTO    RiseBLUE1
  331.                                         GOTO    RiseEnd

  332. RiseRED1: BSR     PB,PB1_B
  333.                 GOTO    Rise11
  334.                
  335. RiseGREEN1:BSR    PB,PB3_B
  336.                 GOTO    Rise11        
  337. RiseBLUE1:BSR    PB,PB2_B                        
  338.                                                                         
  339. Rise11:                MOVR    DutyPosiCnt1,0
  340.           SUBAR   DutyUpCnt1,0
  341.           BTRSS   STATUS,C_B
  342.           GOTO    RiseEnd
  343.           CLRR    DutyUpCnt1
  344.                                        
  345.                                         BCR     Flag_Sys1,HiLow1Flag                                       
  346.                                         GOTO    RiseEnd                                

  347. Rise2:    BTRSS   Flag_Time,Flag_1_1ms_B
  348.           GOTO    RiseEnd         
  349.           BCR     Flag_Time,Flag_1_1ms_B                                                  
  350.                                         INCR    DutyDownCnt1,1
  351.                                        
  352.                                         BTRSC   Flag_Sys1,Red1Flg
  353.                                         GOTO    RiseRED2
  354.                                         BTRSC   Flag_Sys1,Green1Flg
  355.                                         GOTO    RiseGREEN2
  356.                                         BTRSC   Flag_Sys1,Blue1Flg
  357.                                         GOTO    RiseBLUE2                                       
  358.                                         GOTO    RiseEnd
  359.                                        
  360. RiseRED2: BCR     PB,PB1_B
  361.                 GOTO    Rise12               
  362. RiseGREEN2:BCR    PB,PB3_B
  363.                 GOTO    Rise12               
  364. RiseBLUE2:BCR     PB,PB2_B        
  365. Rise12:          MOVR    DutyNegaCnt1,0
  366.           SUBAR   DutyDownCnt1,0
  367.           BTRSS   STATUS,C_B
  368.           GOTO    RiseEnd
  369.           CLRR    DutyDownCnt1                                                                                                                          
  370.                                         BSR     Flag_Sys1,HiLow1Flag                        ;//one cycle is 20ms
  371.                                                                                        
  372.                                         INCR    CycleCnt1,1
  373.                                         MOVIA   5
  374.           SUBAR   CycleCnt1,A
  375.           BTRSS   STATUS,C_B
  376.           GOTO    RiseEnd
  377.           CLRR    CycleCnt1
  378.          
  379.          
  380.           INCR    DutyPosiCnt1,1
  381.           DECR    DutyNegaCnt1,1
  382.          
  383.           MOVIA   30
  384.           SUBAR   DutyPosiCnt1,A
  385.           BTRSS   STATUS,C_B
  386.           GOTO    RiseEnd
  387.          
  388.           MOVIA   1
  389.           MOVAR   DutyPosiCnt1
  390.           MOVIA   30
  391.           MOVAR   DutyNegaCnt1
  392.           BCR     Flag_Sys,RotatFlg                                                                                                                                                               
  393. RiseEnd:  RET                                                      
  394. ;//=================================================================
  395. ;//SystemTick
  396. SystemTick:
  397.                 BTRSS                Flag_Time, Flag_100us_B                                                                                
  398.                                         GOTO                STickEnd        
  399.                                         BCR                  Flag_Time, Flag_100us_B               
  400.           INCR    TimerCnt0,1        
  401.           INCR    TimerCnt1,1        
  402. //          MOVIA   3                  
  403. //          SUBAR   TimerCnt0,A
  404. //          BTRSS   STATUS,C_B
  405. //          GOTO                STick11
  406. //          CLRR    TimerCnt0        
  407.           BSR     Flag_Time,Flag_1_1ms_B         
  408.                         
  409. //STick11:  MOVIA   100                  
  410. //          SUBAR   TimerCnt1,A
  411. //          BTRSS   STATUS,C_B
  412. //          GOTO                STickEnd        
  413. //          CLRR    TimerCnt1        
  414.           BSR     Flag_Time,Flag_1ms_B   
  415. STickEnd: RET        
  416. ;//==================================================================
  417. ;;Clear        RAM 0x10~0x3f
  418. F_ClearAllRAM:
  419.                                         MOVIA                0x2f
  420.                                         MOVAR                0x10
  421.                                         MOVIA                0X11
  422.                                         MOVAR                FSR
  423. L_Clear_Next_Byte:
  424.                                         CLRR                INDF
  425.                                         INCR                FSR, R
  426.                                         DECRSZ        10H, R
  427.                                         LGOTO                L_Clear_Next_Byte
  428.                                         CLRR                FSR
  429.                                         RET
  430. ;//====================================================================
  431. ;//IO 初始化
  432. F_IOInit:
  433.                                         MOVIA                0xff
  434.                                         MOVAR                PB                                ;; 初始值
  435.                                         MOVIA                00000001
  436.                                         IOST                PB                                ;; 设定为IO状态        0=Output,  1=Input                        
  437.                                        
  438.                                         MOVIA                0x80                        ;; 设定为 WDT(B7)=1:EN/0:DIS, PB0(B6)=1:INT/0:GPIO, LVR(B3)=1:EN/0:DIS
  439.                                         MOVAR                PCON
  440.                                         RET
  441. ;//====================================================================
  442. ;//Time0 初始化
  443. ;//Madify Data: 2014.12.11
  444. ;//T=(1/intruction clk)*分频*TMR0
  445. ;//  = ((1/4MHz)*4)*4*256(00H)
  446. ;//  = 1.024ms
  447. F_Timer0Set:
  448.                                         MOVIA                0xFE
  449.                                         MOVAR                INTF                        ;; Clr Timer0 Flag
  450.                                         MOVIA                00000001
  451.                                         T0MD        
  452.                                         MOVIA                0         ;; 500US                                       
  453.                                         MOVAR                TMR0        
  454.                       RET
  455.                       end
  456. ;//==========================================================        
  457.                       END
  458. ;//==========================================================                     
  459. ;Program END
复制代码

所有资料51hei提供下载:
main.zip (2.83 KB, 下载次数: 8)


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

使用道具 举报

沙发
ID:401564 发表于 2018-11-14 21:06 | 只看该作者
你在51论坛上发这个,你有告诉过人家:这是PIC的汇编吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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