找回密码
 立即注册

QQ登录

只需一步,快速开始

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

KSL8M161A单片机圣诞灯程序,含有开关和8模式变化闪烁彩灯

[复制链接]
跳转到指定楼层
楼主
圣诞灯程序,含有开关和8模式变化闪烁彩灯,汇编语言写的,晟矽微电子的开发软件
MN-NSTSUN8T产品功能说明
一、产品型号:MN-NSTSUN8T(输入1.2V升压到5V)
二、    功能:单轻触开关8功能
1、轻触开关控制
4、光控功能:
1) 当白天S+有高电平时,关闭输出,晚上S+为低电平时,打开输出
三、原理图如下:


单片机源程序如下:
  1. ;----------------------------------------------------
  2. ;Project: 圣诞灯
  3. ;Mcu    : KSL8M161A SOP8
  4. ;Editor : JAMES.LIN
  5. ;Version: V3.2
  6. ;       : 双脚驱动
  7. ;       ; 芯片引脚更改,使用新的封装,第4脚为复位,需要外部上来
  8. ;====================================================
  9. ;Spec   : - 1.PA1是按键输入    ;
  10. ;         - 2.PA4/PA5输出引脚  ;
  11. ;         - 3.模式可以记忆     ;
  12. ;====================================================
  13. ;             |----\/----|
  14. ;           1-|VDD    VSS|-8
  15. ;    KEY_PIN2-|PA2    PA4|-7LED_A_PIN
  16. ;    KEY_PIN3-|PA1    PA5|-6LED_B_PIN   
  17. ;        key -|PA3    PA0|-5 day_night
  18. ;             |----------|
  19. ;----------------------------------------------------
  20. #include "KSL8M161.inc"
  21. ;====================================================
  22. ;SRAM 0x40~0x7F
  23. ;====================================================
  24. Acc_buf           equ       0x040
  25. Pflag_buf         equ       0x041
  26. cnt_delay2_buf    equ       0x042
  27. cnt_delay1_buf    equ       0x043

  28. EEP_ADDR          equ       0x044 ;eeprom address register
  29. EEP_DATA          equ       0x045 ;eeprom data register
  30. cnt_dataL         equ       0x046
  31. step_buf          equ       0x047

  32. cyc_min_buf       equ       0x048
  33. pwm_cyc_buf       equ       0x049
  34. pwm_low_buf       equ       0x04a
  35. cyc_mid_buf       equ       0x04b ;
  36. cyc_max_buf       equ       0x04c ;大的循环次数
  37. incre_color_buf   equ       0x04d ;
  38. decre_color_buf   equ       0x04e



  39. ;cyc_delay_buf     equ       0x04f
  40. ;cnt_data_key2     equ       0x050


  41. Flag1_buf        equ            0x070
  42. ;=================FLAG BITS==========================
  43. #define  day_night_F         Flag1_buf,1 ; = 1 night | = 0 day
  44. #define  WRITE_FLAG          Flag1_buf,2 ;eeprom 写标志
  45. #define  key1_on_F           Flag1_buf,3 ;
  46. #define  key1_up_F           Flag1_buf,4 ;
  47. #define  key1_del_F          Flag1_buf,5 ;
  48. #define  xuexi_code_F        Flag1_buf,6 ;
  49. #define  sleep_f             Flag1_buf,7 ;学习完成标志
  50. mode_buf         equ     0x071   
  51. ;=================开始工作寄存器====================
  52. #define   mode1_all_f         mode_buf,0 ;模式1标志
  53. #define   mode2_jt_pao_f      mode_buf,1 ;模式2标志
  54. #define   mode3_jt_shan_f     mode_buf,2 ;模式3标志
  55. #define   mode4_jt_huxi_f     mode_buf,3 ;模式4标志
  56. #define   mode5_jt_2shan_f    mode_buf,4 ;模式5标志
  57. #define   mode6_ts_huxi_f     mode_buf,5 ;模式6标志
  58. #define   mode7_jt_ks3_f      mode_buf,6 ;模式7标志
  59. #define   mode8_ts_liang_f    mode_buf,7 ;模式8标志

  60. mode_pwm_buf     equ     0x072   
  61. #define   led2_open_f         mode_pwm_buf,0  

  62. ;====================================================
  63. ;Io spec
  64. ;====================================================
  65. ;;---------------IO BITS---------------------------
  66. #define key_pin       PORTA,3         ;继电器输出
  67. #define led_a_pin     PORTA,4         ;LED输出
  68. #define led_1_pin     PORTA,2   
  69. #define led_b_pin     PORTA,5         ;无线接收引脚
  70. #define led_2_pin     PORTA,1         ;
  71. #define key_day_pin   PORTA,0         ;白天晚上判断引脚
  72. ;====================================================

  73. ;====================================================
  74. ;main program start
  75. ;====================================================
  76.      org      0x00
  77.      ljump    start
  78.      org      0x04
  79.      ljump    intterupt
  80. ;====================================================
  81. start:
  82.      clrwdt
  83.      BANKSEL           MSCKCON
  84.      bset         MSCKCON,4                ;打开LVR
  85.      BANKSEL           INTCON                ;中断寄存器
  86.      bclr           INTCON,GIE               ;禁止外部中断
  87.      BANKSEL           WDTCON
  88.      bclr          WDTCON,SWDTEN            ;关闭开门狗寄存器  
  89.      BANKSEL           PORTA
  90.      clrr          PORTA
  91.      BANKSEL           TRISA
  92.      movai         00001001B                ;0为输出 1为输入
  93.      movra          TRISA                    ;IO输入输出寄存器

  94.      BANKSEL           WPUA
  95.      movai         00000001B                ;0 disable 1 enable
  96.      movra          WPUA                     ;端口弱上拉寄存器

  97.         
  98.      BANKSEL            OSCCON               ;16MHz 内部振荡器
  99.      movai    0x7f
  100.      movra    OSCCON
  101.         
  102.      BANKSEL            OPTION_REG
  103.      movai         00000110B                ;1:8 TIMER0 rate
  104.      movra         OPTION_REG

  105.      BANKSEL            TMR0             ;Timer0 计数结果寄存器
  106.      movai         63
  107.      movra         TMR0                     ;200us定时器
  108.      
  109.      ;lcall      int_ram
  110.      ;clrr       cnt_pwma
  111.      clrr       cyc_max_buf
  112.      clrr       cyc_mid_buf
  113.      clrr       pwm_low_buf
  114.      clrr       pwm_cyc_buf
  115.      clrr       cyc_min_buf


  116.      clrr       Flag1_buf
  117.      clrr       mode_buf


  118.      BANKSEL    INTCON
  119.      bset       INTCON,T0IE          ;允许T0中断
  120.      bset       INTCON,GIE           ;开启总中断
  121.      ;>>eeprom start run
  122.      movai        0x03
  123.      movra        EEP_ADDR
  124.      lcall        EEPROM_READ
  125.      movr          EEP_DATA,to_a

  126.     ;lcall   int_ram此处需要清   模式各种定时的寄存器

  127.      movai   10
  128.      subar   step_buf,to_a
  129.      jbclr   status,C
  130.      goto    start_19

  131.      movai   9
  132.      subar   step_buf,to_a
  133.      jbset   status,C
  134.      goto    start_12
  135.      clrr    step_buf         
  136.      bset    mode8_ts_liang_f     ;同时亮
  137.      goto    start_20
  138. start_12:               
  139.      movai   8
  140.      subar   step_buf,to_a
  141.      jbset   status,C
  142.      goto    start_13            
  143.      bset    mode7_jt_ks3_f       ;L1L2交替快闪3次   
  144.      goto    start_20     
  145. start_13:     
  146.      movai   7
  147.      subar   step_buf,to_a
  148.      jbset   status,C
  149.      goto    start_14         
  150.      bset    mode6_ts_huxi_f           ;L1L2同时呼吸灯   
  151.      bset    led_a_pin
  152.      goto    start_20                     
  153. start_14:            
  154.      movai   6
  155.      subar   step_buf,to_a
  156.      jbset   status,C  
  157.      goto    start_15      
  158.      bset    mode5_jt_2shan_f          ;L1L2交替 跑马 快闪3次  
  159.      goto    start_20
  160. start_15:            
  161.      movai   5
  162.      subar   step_buf,to_a
  163.      jbset   status,C
  164.      goto    start_16                 ;L1L2交替呼吸
  165.      bset    mode4_jt_huxi_f
  166.      goto    start_20
  167. start_16:            
  168.      movai   4
  169.      subar   step_buf,to_a
  170.      jbset   status,C  
  171.      goto    start_17                 ;L1L2跑马灯
  172.      bset    mode3_jt_shan_f      
  173.      goto    start_20
  174. start_17:            
  175.      movai   3
  176.      subar   step_buf,to_a
  177.      jbset   status,C
  178.      goto    start_18         
  179.      bset    mode2_jt_pao_f          ;1L2交替呼吸闪
  180.      goto    start_20
  181. start_18:            
  182.      movai   2
  183.      subar   step_buf,to_a
  184.      jbset   status,C
  185.      goto    start_19         
  186.      bset    mode1_all_f            ;全部模式跑起来

  187.      goto    start_20
  188. start_19:                           
  189.      bset    sleep_f                ;灭灯
  190. start_20:


  191.      bset    mode4_jt_huxi_f  

  192. ;-------            -----------
  193. ;--------主程序部分-------------
  194. main:
  195. sys_mode4_00:
  196.      jbset    mode4_jt_huxi_f
  197.      goto     sys_mode5_00

  198.      lcall    led_fir_off_pro
  199.      lcall    led_sec_off_pro
  200.      movai    2
  201.      movra    cyc_max_buf
  202.      movai    3
  203.      movra    cyc_mid_buf
  204. sys_mode4_01:
  205. ;灯1      第一次           
  206.      bclr     led2_open_f
  207.      call     huxi_pro      
  208.      jbset    mode4_jt_huxi_f
  209.      goto     sys_mode4_90
  210.      
  211.      lcall    led_fir_off_pro
  212.      lcall    led_sec_off_pro
  213.      movai    150
  214.      movra    cyc_min_buf
  215. sys_mode4_10:
  216.      call     Delay_1ms_pro
  217.      jbset    mode4_jt_huxi_f
  218.      goto     sys_mode4_90
  219.      decrsz   cyc_min_buf,to_r
  220.      goto     sys_mode4_10
  221.      
  222.      movai    150
  223.      movra    cyc_min_buf
  224. sys_mode4_11:
  225.      call     Delay_1ms_pro
  226.      jbset    mode4_jt_huxi_f
  227.      goto     sys_mode4_90
  228.      decrsz   cyc_min_buf,to_r
  229.      goto     sys_mode4_11
  230. ;灯2      第一次      
  231.      bset     led2_open_f
  232.      call     huxi_pro      
  233.      jbset    mode4_jt_huxi_f
  234.      goto     sys_mode4_90
  235.      
  236.      lcall    led_fir_off_pro
  237.      lcall    led_sec_off_pro
  238.      movai    150
  239.      movra    cyc_min_buf
  240. sys_mode4_20:
  241.      call     Delay_1ms_pro
  242.      jbset    mode4_jt_huxi_f
  243.      goto     sys_mode4_90
  244.      decrsz   cyc_min_buf,to_r
  245.      goto     sys_mode4_20
  246.      
  247.      movai    150
  248.      movra    cyc_min_buf
  249. sys_mode4_21:
  250.      call     Delay_1ms_pro
  251.      jbset    mode4_jt_huxi_f
  252.      goto     sys_mode4_90
  253.      decrsz   cyc_min_buf,to_r
  254.      goto     sys_mode4_21
  255.      
  256.      decrsz   cyc_max_buf,to_r
  257.      goto     sys_mode4_01

  258.      movai    4
  259.      movra    cyc_max_buf
  260.      movai    1
  261.      movra    cyc_mid_buf

  262. sys_mode4_31:
  263. ;灯1      第一次           
  264.      bclr     led2_open_f
  265.      call     huxi_pro      
  266.      jbset    mode4_jt_huxi_f
  267.      goto     sys_mode4_90
  268.      
  269.      lcall    led_fir_off_pro
  270.      lcall    led_sec_off_pro
  271.      movai    135
  272.      movra    cyc_min_buf
  273. sys_mode4_40:
  274.      call     Delay_1ms_pro
  275.      jbset    mode4_jt_huxi_f
  276.      goto     sys_mode4_90
  277.      decrsz   cyc_min_buf,to_r
  278.      goto     sys_mode4_40
  279.      
  280.      movai    135
  281.      movra    cyc_min_buf
  282. sys_mode4_41:
  283.      call     Delay_1ms_pro
  284.      jbset    mode4_jt_huxi_f
  285.      goto     sys_mode4_90
  286.      decrsz   cyc_min_buf,to_r
  287.      goto     sys_mode4_41
  288. ;灯2      第一次      
  289.      bset     led2_open_f
  290.      call     huxi_pro      
  291.      jbset    mode4_jt_huxi_f
  292.      goto     sys_mode4_90
  293.      
  294.      lcall    led_fir_off_pro
  295.      lcall    led_sec_off_pro
  296.      movai    135
  297.      movra    cyc_min_buf
  298. sys_mode4_50:
  299.      call     Delay_1ms_pro
  300.      jbset    mode4_jt_huxi_f
  301.      goto     sys_mode4_90
  302.      decrsz   cyc_min_buf,to_r
  303.      goto     sys_mode4_50
  304.      
  305.      movai    135
  306.      movra    cyc_min_buf
  307. sys_mode4_51:
  308.      call     Delay_1ms_pro
  309.      jbset    mode4_jt_huxi_f
  310.      goto     sys_mode4_90
  311.      decrsz   cyc_min_buf,to_r
  312.      goto     sys_mode4_51
  313.      
  314.      decrsz   cyc_max_buf,to_r
  315.      goto     sys_mode4_31

  316.      jbclr    mode1_all_f
  317.      lgoto    sys_mode5_00
  318. sys_mode4_90:
  319.      goto     sys_mode9_90
  320. sys_mode5_00:
  321.      goto     main














  322. sys_mode2_00:
  323.     jbset    mode2_jt_pao_f
  324.     goto     sys_mode3_00

  325.      movai    16
  326.      movra    cyc_mid_buf
  327.    
  328. sys_mode2_09:
  329.      bclr     led2_open_f
  330.      movai    5
  331.      movra    cyc_min_buf      
  332. sys_mode2_10:
  333.      movai    25
  334.      lcall    Tmin_time_pro

  335.      jbset    mode2_jt_pao_f
  336.      goto     sys_mode2_90
  337.      decrsz   cyc_min_buf,to_r
  338.      goto     sys_mode2_10

  339.      movai    5
  340.      movra    cyc_min_buf      
  341. sys_mode2_20:
  342.      movai    50
  343.      lcall    Tmin_time_pro
  344.      jbset    mode2_jt_pao_f
  345.      goto     sys_mode2_90
  346.      decrsz   cyc_min_buf,to_r
  347.      goto     sys_mode2_20

  348.      

  349.      lcall    led_sec_off_pro
  350.      lcall    led_fir_on_pro
  351.      movai    169
  352.      movra    cyc_min_buf
  353. sys_mode2_21:
  354.      call     Delay_1ms_pro
  355.      jbset    mode2_jt_pao_f
  356.      goto     sys_mode2_90
  357.      decrsz   cyc_min_buf,to_r
  358.      goto     sys_mode2_21



  359.      bset     led2_open_f     
  360.      movai    5
  361.      movra    cyc_min_buf      
  362. sys_mode2_30:
  363.      movai    25
  364.      lcall    Tmin_time_pro
  365.      jbset    mode2_jt_pao_f
  366.      goto     sys_mode2_90
  367.      decrsz   cyc_min_buf,to_r
  368.      goto     sys_mode2_30

  369.      movai    5
  370.      movra    cyc_min_buf      
  371. sys_mode2_40:
  372.      movai    50
  373.      lcall    Tmin_time_pro
  374.      jbset    mode2_jt_pao_f
  375.      goto     sys_mode2_90
  376.      decrsz   cyc_min_buf,to_r
  377.      goto     sys_mode2_40

  378.      
  379.      lcall    led_fir_off_pro
  380.      lcall    led_sec_on_pro
  381.      movai    169
  382.      movra    cyc_min_buf
  383. sys_mode2_41:
  384.      call     Delay_1ms_pro
  385.      jbset    mode2_jt_pao_f
  386.      goto     sys_mode2_90
  387.      decrsz   cyc_min_buf,to_r
  388.      goto     sys_mode2_41

  389.      decrsz   cyc_mid_buf,to_r
  390.      goto     sys_mode2_09

  391. ;------mode2 的第2种波形
  392.      
  393.      movai    8
  394.      movra    cyc_mid_buf
  395. sys_mode2_49:
  396.      bclr     led2_open_f
  397.      movai    10
  398.      movra    cyc_min_buf      
  399. sys_mode2_50:
  400.      movai    25
  401.      lcall    Tmin_time_pro
  402.      jbset    mode2_jt_pao_f
  403.      goto     sys_mode2_90
  404.      decrsz   cyc_min_buf,to_r
  405.      goto     sys_mode2_50

  406.      movai    10
  407.      movra    cyc_min_buf      
  408. sys_mode2_60:
  409.      movai    50
  410.      lcall    Tmin_time_pro
  411.      jbset    mode2_jt_pao_f
  412.      goto     sys_mode2_90
  413.      decrsz   cyc_min_buf,to_r
  414.      goto     sys_mode2_60

  415.      

  416.      lcall    led_sec_off_pro
  417.      lcall    led_fir_on_pro
  418.      movai    169
  419.      movra    cyc_min_buf
  420. sys_mode2_61:
  421.      call     Delay_1ms_pro
  422.      jbset    mode2_jt_pao_f
  423.      goto     sys_mode2_90
  424.      decrsz   cyc_min_buf,to_r
  425.      goto     sys_mode2_61

  426.      movai    169
  427.      movra    cyc_min_buf
  428. sys_mode2_62:
  429.      call     Delay_1ms_pro
  430.      jbset    mode2_jt_pao_f
  431.      goto     sys_mode2_90
  432.      decrsz   cyc_min_buf,to_r
  433.      goto     sys_mode2_62

  434.      bset     led2_open_f     
  435.      movai    10
  436.      movra    cyc_min_buf      
  437. sys_mode2_70:
  438.      movai    25
  439.      lcall    Tmin_time_pro
  440.      jbset    mode2_jt_pao_f
  441.      goto     sys_mode2_90
  442.      decrsz   cyc_min_buf,to_r
  443.      goto     sys_mode2_70

  444.      movai    10
  445.      movra    cyc_min_buf      
  446. sys_mode2_80:
  447.      movai    50
  448.      lcall    Tmin_time_pro
  449.      jbset    mode2_jt_pao_f
  450.      goto     sys_mode2_90
  451.      decrsz   cyc_min_buf,to_r
  452.      goto     sys_mode2_80

  453.      
  454.      lcall    led_fir_off_pro
  455.      lcall    led_sec_on_pro
  456.      movai    169
  457.      movra    cyc_min_buf
  458. sys_mode2_81:
  459.      call     Delay_1ms_pro
  460.      jbset    mode2_jt_pao_f
  461.      goto     sys_mode2_90
  462.      decrsz   cyc_min_buf,to_r
  463.      goto     sys_mode2_81

  464.      movai    169
  465.      movra    cyc_min_buf
  466. sys_mode2_82:
  467.      call     Delay_1ms_pro
  468.      jbset    mode2_jt_pao_f
  469.      goto     sys_mode2_90
  470.      decrsz   cyc_min_buf,to_r
  471.      goto     sys_mode2_82
  472.      
  473.      decrsz   cyc_mid_buf,to_r
  474.      goto     sys_mode2_49
  475.      jbclr    mode1_all_f
  476.      lgoto    sys_mode3_00   
  477. sys_mode2_90:   
  478.      goto     sys_mode9_90
  479.   

  480. ;--------mode3波形-----------------------
  481. sys_mode3_00:
  482.      jbset    mode3_jt_shan_f
  483.      goto     sys_mode4_00
  484. sys_mode3_01:
  485.      movai    8
  486.      movra    cyc_mid_buf

  487. sys_mode3_09:
  488.      lcall    led_sec_off_pro
  489.      lcall    led_fir_on_pro

  490.      movai    239
  491.      movra    cyc_min_buf
  492. sys_mode3_10:
  493.      call     Delay_1ms_pro
  494.      jbset    mode3_jt_shan_f
  495.      goto     sys_mode3_90
  496.      decrsz   cyc_min_buf,to_r
  497.      goto     sys_mode3_10

  498.      movai    239
  499.      movra    cyc_min_buf
  500. sys_mode3_11:
  501.      call     Delay_1ms_pro
  502.      jbset    mode3_jt_shan_f
  503.      goto     sys_mode3_90
  504.      decrsz   cyc_min_buf,to_r
  505.      goto     sys_mode3_11

  506.      lcall    led_fir_off_pro
  507.      lcall    led_sec_on_pro

  508.      movai    239
  509.      movra    cyc_min_buf
  510. sys_mode3_20:
  511.      call     Delay_1ms_pro
  512.      jbset    mode3_jt_shan_f
  513.      goto     sys_mode3_90
  514.      decrsz   cyc_min_buf,to_r
  515.      goto     sys_mode3_20

  516.      movai    239
  517.      movra    cyc_min_buf
  518. sys_mode3_21:
  519.      call     Delay_1ms_pro
  520.      jbset    mode3_jt_shan_f
  521.      goto     sys_mode3_90
  522.      decrsz   cyc_min_buf,to_r
  523.      goto     sys_mode3_21

  524.      decrsz   cyc_mid_buf,to_r
  525.      goto     sys_mode3_09

  526. ;-------mode3第二中波形------------------
  527. sys_mode3_31:
  528.      movai    16
  529.      movra    cyc_mid_buf

  530. sys_mode3_39:
  531.      lcall    led_sec_off_pro
  532.      lcall    led_fir_on_pro

  533.      movai    240
  534.      movra    cyc_min_buf
  535. sys_mode3_40:
  536.      call     Delay_1ms_pro
  537.      jbset    mode3_jt_shan_f
  538.      goto     sys_mode3_90
  539.      decrsz   cyc_min_buf,to_r
  540.      goto     sys_mode3_40

  541.    
  542.      lcall    led_fir_off_pro
  543.      lcall    led_sec_on_pro

  544.      movai    240
  545.      movra    cyc_min_buf
  546. sys_mode3_50:
  547.      call     Delay_1ms_pro
  548.      jbset    mode3_jt_shan_f
  549.      goto     sys_mode3_90
  550.      decrsz   cyc_min_buf,to_r
  551.      goto     sys_mode3_50
  552.    
  553.      decrsz   cyc_mid_buf,to_r
  554.      goto     sys_mode3_39
  555.      jbclr    mode1_all_f
  556.      lgoto    sys_mode4_00
  557. sys_mode3_90:
  558.      goto     sys_mode9_90


  559. ;--------mode4波形-----------------------

  560.      
  561.      




















  562. sys_mode9_90:
  563.      




  564.      jbclr     day_night_F
  565.      goto      main_sleep
  566. ;====================================================
  567. ;====================================================
  568. mstep_del_pro:
  569.      ;>>------------------------------
  570. mstep_del_00:  
  571.      jbset     key1_del_F
  572.      lgoto     mstep_del_90
  573.      bclr      key1_del_F           ;
  574. eeprom_cun_00:
  575.      BANKSEL   INTCON
  576.      bclr      INTCON,GIE           ;关闭总中断
  577.      movai     0x03
  578.      movra     EEP_ADDR
  579.      movr      step_buf,to_a
  580.      movra     EEP_DATA
  581.      lcall     eeprom_write
  582.      ;===========================================
  583.      BANKSEL   INTCON
  584.      bset      INTCON,GIE           ;关闭总中断
  585. eeprom_cun_09:
  586.      BANKSEL    PORTA                ;默认返回BANK0
  587.      
  588. mstep_del_90:
  589.    
  590.       ;bset       led_a_pin
  591.      ; movai      10
  592.      ; lcall      Delay_1ms_pro
  593.      ; bclr       led_a_pin
  594.      ; movai      10
  595.     ;  lcall      Delay_1ms_pro
  596.     ;  bset       led_a_pin
  597.    ;   movai      10
  598.     ;  lcall      Delay_1ms_pro
  599.     ;  bclr       led_a_pin
  600.     ;  movai      10
  601.     ;  lcall      Delay_1ms_pro
  602.     ;  bset       led_a_pin
  603.     ;  movai      10
  604.     ;  lcall      Delay_1ms_pro
  605.     ;  bclr       led_a_pin
  606.     ;  movai      10
  607.     ;  lcall      Delay_1ms_pro
  608.     ;  lgoto      main
  609.    
  610. ;====================================================






  611. ;====================================================

  612. ;====================================================
  613. main_sleep:
  614.      lcall      led_fir_off_pro
  615.      lcall      led_sec_off_pro     
  616.      lgoto      main
  617. ;====================================================
  618. led_fir_off_pro:
  619.       bset      led_a_pin
  620.       bset      led_1_pin
  621.       return
  622. led_fir_on_pro:
  623.       bclr      led_a_pin
  624.       bclr      led_1_pin
  625.       return
  626. led_sec_off_pro:
  627.       bset      led_b_pin
  628.       bset      led_2_pin
  629.       return
  630. led_sec_on_pro:
  631.       bclr      led_b_pin
  632.       bclr      led_2_pin
  633.       return
  634. ;;====================================================
  635. ;eeprom program start
  636. ;====================================================
  637. eeprom_write:
  638.           CLRWDT
  639.           BANKSEL                PIR1
  640.           bclr       PIR1,EEIF                                                                                                               
  641.           BANKSEL    EECON1
  642.           bset       EECON1,WREN1                                                                                                
  643.           bset       EECON1,WREN2
  644.           bset       EECON1,WREN3

  645.           BANKSEL          PORTA
  646.           movr                   EEP_ADDR,TO_A                                                                                                
  647.           BANKSEL          EEADR                                                                                                                        
  648.           movra                  EEADR

  649.           BANKSEL                PORTA
  650.           movr                 EEP_DATA,TO_A
  651.           BANKSEL    EEDAT
  652.           movra      EEDAT
  653.           bset       EECON2,WR
  654.       
  655.           BANKSEL                EECON2                                                                                       
  656.           jbclr           EECON2,WR                                                                                                        
  657.           lgoto      $-1
  658.           bclr       EECON1,WREN1
  659.           bclr       EECON1,WREN2
  660.           bclr       EECON1,WREN3
  661.           bclr                 WRITE_FLAG

  662.           BANKSEL    PORTA                                                                                                                        
  663.           ret        
  664.      ;>>write eeprom end
  665. eeprom_read:
  666.           CLRWDT
  667.           movr            EEP_ADDR,TO_A                                                                                                
  668.           BANKSEL           EEADR                                                                                                                        
  669.           movra           EEADR
  670.           bset            EECON1,RD                                                                                                               
  671.           movr            EEDAT,TO_A                                                                                                               

  672.           BANKSEL         PORTA                                                                                                                        
  673.           movra             EEP_DATA
  674.           ret
  675.      ;>>read eeprom end

  676. ;====================================================
  677. ;15.4ms-最小周期,占空比子程序
  678. ;====================================================
  679. Tmin_time_pro:
  680.        movra      pwm_low_buf
  681.        movra      pwm_cyc_buf      
  682. Tmin_time_10:
  683.        jbclr      led2_open_f
  684.        goto       Tmin_time_11
  685.        lcall      led_sec_off_pro
  686.        lcall      led_fir_on_pro      
  687.        goto       Tmin_time_12
  688. Tmin_time_11:      
  689.        lcall      led_fir_off_pro
  690.        lcall      led_sec_on_pro   
  691. Tmin_time_12:
  692.        lcall      Delay_154us_pro
  693.        decrsz     pwm_cyc_buf,to_r
  694.        lgoto      Tmin_time_12

  695.        jbclr      led2_open_f
  696.        goto       Tmin_time_13
  697.        lcall      led_fir_off_pro
  698.        lcall      led_sec_on_pro
  699.        lgoto      Tmin_time_14
  700. Tmin_time_13:
  701.        lcall      led_sec_off_pro
  702.        lcall      led_fir_on_pro   
  703. Tmin_time_14:
  704.        movr       pwm_low_buf,to_a           
  705.        subwi      100
  706.        movra      pwm_cyc_buf      
  707. Tmin_time_15:   
  708.        lcall      Delay_154us_pro   
  709.        decrsz     pwm_cyc_buf,to_r
  710.        lgoto      Tmin_time_15
  711.        ret
  712. ;====================================================
  713. ;交替呼吸   子程序
  714. ;====================================================
  715. huxi_pro:
  716.      movai    1
  717.      movra    incre_color_buf
  718.      movai    99
  719.      movra    decre_color_buf

  720.      movr     cyc_mid_buf,to_a
  721.      movra    pwm_low_buf   

  722. huxi_10:     
  723.      movr     incre_color_buf,to_a
  724.      movra    pwm_cyc_buf  
  725.      
  726.      jbclr    led2_open_f
  727.      goto     huxi_11        
  728.      lcall    led_fir_on_pro
  729.      goto     huxi_12
  730. huxi_11:
  731.      lcall    led_sec_on_pro
  732. huxi_12:     
  733.      call     Delay_154us_pro
  734.      jbset    mode4_jt_huxi_f
  735.      goto     huxi_90
  736.      decrsz   pwm_cyc_buf,to_r     
  737.      goto     huxi_12

  738.      lcall    led_fir_off_pro
  739.      lcall    led_sec_off_pro
  740.      movr     decre_color_buf,to_a  
  741.      movra    pwm_cyc_buf            
  742. huxi_13:     
  743.      call     Delay_154us_pro
  744.      jbset    mode4_jt_huxi_f
  745.      goto     huxi_90
  746.      decrsz   pwm_cyc_buf,to_r     
  747.      goto     huxi_13
  748.      
  749.      decrsz   pwm_low_buf,to_r     
  750.      goto     huxi_10
  751.      
  752.      movai    99
  753.      subar    incre_color_buf,to_a
  754.      jbclr    status,C
  755.      goto     huxi_20
  756.      incr     incre_color_buf,to_r     
  757.      decrsz   decre_color_buf,to_r        
  758.      movr     cyc_mid_buf,to_a
  759.      movra    pwm_low_buf   
  760.      goto     huxi_10

  761. huxi_20:      
  762.      jbclr    led2_open_f
  763.      goto     huxi_21        
  764.      lcall    led_fir_on_pro
  765.      goto     huxi_22
  766. huxi_21:
  767.      lcall    led_sec_on_pro
  768. huxi_22:
  769.      movai    3  
  770.      subar    cyc_mid_buf,to_a   
  771.      jbset    status,z
  772.      goto     huxi_23
  773.      movai    60
  774.      movra    cyc_min_buf
  775.      goto     huxi_24
  776. huxi_23:
  777.      movai    30
  778.      movra    cyc_min_buf
  779. huxi_24:  
  780.      call     Delay_1ms_pro   
  781.      jbset    mode4_jt_huxi_f
  782.      goto     huxi_90
  783.      decrsz   cyc_min_buf,to_r
  784.      goto     huxi_24

  785.      movai    1
  786.      movra    incre_color_buf
  787.      movai    99
  788.      movra    decre_color_buf

  789.      movr     cyc_mid_buf,to_a
  790.      movra    pwm_low_buf
  791. huxi_85:     
  792.      movr     decre_color_buf,to_a
  793.      movra    pwm_cyc_buf

  794.      jbclr    led2_open_f
  795.      goto     huxi_86           
  796.      lcall    led_fir_on_pro
  797.      goto     huxi_87
  798. huxi_86:
  799.      lcall    led_sec_on_pro
  800. huxi_87:      
  801.      call     Delay_154us_pro
  802.      jbset    mode4_jt_huxi_f
  803.      goto     huxi_90
  804.      decrsz   pwm_cyc_buf,to_r     
  805.      goto     huxi_87

  806.      lcall    led_fir_off_pro
  807.      lcall    led_sec_off_pro   
  808.      movr     incre_color_buf,to_a
  809.      movra    pwm_cyc_buf            
  810. huxi_88:     
  811.      call     Delay_154us_pro
  812.      jbset    mode4_jt_huxi_f
  813.      goto     huxi_90
  814.      decrsz   pwm_cyc_buf,to_r
  815.      goto     huxi_88
  816.      
  817.      decrsz   pwm_low_buf,to_r   
  818.      goto     huxi_85
  819.      
  820.      movai    99
  821.      subar    incre_color_buf,to_a
  822.      jbclr    status,C
  823.      goto     huxi_90
  824.      incr     incre_color_buf,to_r     
  825.      decrsz   decre_color_buf,to_r        
  826.      movr     cyc_mid_buf,to_a        
  827.      movra    pwm_low_buf   
  828.      goto     huxi_85     
  829. huxi_90:
  830.      lcall    led_fir_off_pro
  831.      lcall    led_sec_off_pro   
  832.      return

  833. ;====================================================
  834. ;delay 200us 子程序
  835. ;====================================================
  836. Delay_5us_pro:
  837.      nop
  838.      nop
  839.      nop
  840.      nop
  841.      nop
  842.      nop
  843.      ret
  844. ……………………

  845. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



所有资料51hei提供下载:

63-MN-NSTSUN8T 圣诞灯程序.rar (4.02 MB, 下载次数: 33)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:413735 发表于 2018-10-22 21:41 | 只看该作者
学习,好东西,谢谢
回复

使用道具 举报

板凳
ID:535885 发表于 2019-5-12 02:23 | 只看该作者
找了好久,主要要这个芯片资料
回复

使用道具 举报

地板
ID:590709 发表于 2019-7-26 15:16 | 只看该作者
chengjj 发表于 2019-5-12 02:23
找了好久,主要要这个芯片资料

请问这是什么型号芯片
回复

使用道具 举报

5#
ID:739996 发表于 2020-4-29 10:53 | 只看该作者
请问一下,这是什么编译环境?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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