|
/////////////////////////////////////////////
汇编程序
/////////////////////////////////////////////
/***********************************************************************/
/***名称:按键控制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;
}
}
/*---------------------------------------------------------------------*/
/*-- 程序结束 ---------------------------------------*/
/*---------------------------------------------------------------------*/
|
|