欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5742|回復: 2
收起左側

按鍵控制單片機PWM對LED燈調光的匯編語言源程序

[復制鏈接]
ID:90014 發表于 2015-9-15 22:09 | 顯示全部樓層 |閱讀模式

/////////////////////////////////////////////
匯編程序
/////////////////////////////////////////////
/***********************************************************************/
/***名稱:按鍵控制PWM對LED燈調光         *******************************/
/***功能:此程序為主模塊,改變LOOP_NUM1的值就改變了占空比,初值50%      */
/*** 按鍵KEY1,KEY2對LOOP_NUM1的調整實現8級亮度調節                    */
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定義                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_3        EQU P3
PORT_2        EQU P2
PORT_1        EQU P1

KEY1        EQU P3.6
KEY2        EQU P3.7

LOOP_NUM1        EQU 30H          
LOOP_NUM2        EQU 31H
LOOP_NUM3        EQU 32H               
/*---------------------------------------------------------------------*/
/*--   程序開始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
        ORG 0000H
        SJMP MAIN
        ORG 0003H
        SJMP EX_INT0
        ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:        MOV PORT_2,#00H         //端口初始化
          MOV PORT_1,#00H
        CLR IT0
        SETB EX0
        SETB EA

START:        MOV LOOP_NUM3,#255
        MOV LOOP_NUM2,#255
        MOV LOOP_NUM1,#127 //改變LOOP_NUM1的值就改變了占空比,初值50%
LOOP:        MOV A,LOOP_NUM1
        CJNE A,LOOP_NUM2,LOOP2
LOOP2:    JC LOOP3
        MOV PORT_2,#0FFH
        SJMP EXIT
LOOP3:        MOV PORT_2,#00H       
EXIT:        DJNZ LOOP_NUM2,LOOP
        MOV LOOP_NUM2,#255
        MOV A,LOOP_NUM1
        CJNE A,#255,LOOP
        SJMP START

/*---------------------------------------------------------------------*/
/*--   中斷子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
EX_INT0:  JNB KEY1,PWM_ADD
        JNB KEY2,PWM_SUBB
        SJMP EXIT_INT

PWM_ADD:        JNB KEY1,PWM_ADD
        MOV A,LOOP_NUM1
        CJNE A,#250,PWM_ADD2
PWM_ADD2:        JC PWM_ADD3
        MOV LOOP_NUM1,#251
        SJMP EXIT_INT
PWM_ADD3:        ADD A,#31
        MOV LOOP_NUM1,A
        SJMP EXIT_INT
/*--------------------------------*/
PWM_SUBB:        JNB KEY2,PWM_SUBB

        MOV A,LOOP_NUM1
        CJNE A,#4,PWM_SUBB2

PWM_SUBB2:JC PWM_SUBB3
        SUBB A,#31
        MOV LOOP_NUM1,A
        SJMP EXIT_INT

PWM_SUBB3:MOV LOOP_NUM1,#3
        SJMP EXIT_INT




EXIT_INT:        RETI
/*---------------------------------------------------------------------*/
/*--   程序結束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
        END

       

回復112帖
2014/04/19 15:55:41 113帖 yueyunno1 師長     
                               
////////////////////////////////
C程序
////////////////////////////////
/***********************************************************************/
/***名稱:按鍵控制PWM對LED燈調光         *******************************/
/***功能:此程序為主模塊,改變LOOP_NUM1的值就改變了占空比,初值50%      */
/*** 按鍵KEY1,KEY2對LOOP_NUM1的調整實現8級亮度調節                    */
/***********************************************************************/
#include<reg51.h>
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定義                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2

sbit KEY1 = P3^6;
sbit KEY2 = P3^7;

U8 j;       
/*---------------------------------------------------------------------*/
/*--   中斷子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void  exint0() interrupt 0
{
        if(KEY1==0)
        {
                while(~KEY1);
                if(j<251)
                        j+=31;
                else
                        j=251;
        }
        else if(KEY2==0)
        {
                while(~KEY2);
                if(j>3)
                        j-=31;
                else
                        j=3;
        }       
}

/*---------------------------------------------------------------------*/
/*--   主程序                   ----------------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
        U8 i;
        PORT_2=0X00;

        IT0 = 0;                        //set INT0 int type (1:Falling 0:Low level)
        EX0 = 1;                        //enable INT0 interrupt
        EA = 1;                         //open global interrupt switch
        j=127;                                                          //改變j的值就改變了占空比,初值50%
        while(1)
        {
                for(i=255;i>0;i--)
                        PORT_2=(j<i)?0x00:0xff;
        }
}
/*---------------------------------------------------------------------*/
/*--   程序結束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/



回復

使用道具 舉報

ID:74784 發表于 2015-9-15 22:14 | 顯示全部樓層
看見匯編真親切~~~~~~~~~~~~~~~~
回復

使用道具 舉報

ID:247864 發表于 2017-11-12 13:38 | 顯示全部樓層
有電路圖嗎?這是控制幾個燈亮度的?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表