/////////////////////////////////////////
汇编程序
/////////////////////////////////////////
/***********************************************************************/
/***名称:PWM控制LED灯亮度渐变 ***************************************/
/***功能:亮度渐变 */
/***********************************************************************/
/*---------------------------------------------------------------------*/
/*-- 端口定义 ---------------------------------------*/
/*---------------------------------------------------------------------*/
PORT_2 EQU P2
PORT_1 EQU P1
LOOP_NUM1 EQU 30H
LOOP_NUM2 EQU 31H
LOOP_NUM3 EQU 32H
/*---------------------------------------------------------------------*/
/*-- 程序开始 ---------------------------------------*/
/*---------------------------------------------------------------------*/
ORG 0000H
SJMP MAIN
ORG 0030H
/*---------------------------------------------------------------------*/
/*-- 主程序 ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN: MOV PORT_2,#00H //端口初始化
MOV PORT_1,#00H
START: MOV LOOP_NUM3,#255
MOV LOOP_NUM2,#255
MOV LOOP_NUM1,#0
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
INC LOOP_NUM1 //变量
MOV A,LOOP_NUM1
CJNE A,#255,LOOP
SJMP START
/*---------------------------------------------------------------------*/
/*-- 程序结束 ---------------------------------------*/
/*---------------------------------------------------------------------*/
END
回复95帖
2014/04/18 10:44:30 96帖 yueyunno1 师长
/////////////////////////////////////////////
C程序
/////////////////////////////////////////////
/***********************************************************************/
/***名称:PWM控制LED灯亮度渐变 ***************************************/
/***功能:亮度渐变 */
/***********************************************************************/
#include<reg51.h>
typedef unsigned char U8;
typedef unsigned int U16;
/*---------------------------------------------------------------------*/
/*-- 端口定义 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define PORT_2 P2
#define PORT_1 P1
sbit LED_RED =P1^0;
sbit LED_GREEN=P1^1;
sbit LED_BLUE =P1^2;
/*---------------------------------------------------------------------*/
/*-- 主程序 ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
U8 i,j;
PORT_2=0X00;
while(1)
{
for(i=255;i>0;i--)
PORT_2=(j<i)?0x00:0xff;
if(j<255)j++;else j=0;
}
}
/*---------------------------------------------------------------------*/
/*-- 程序结束 ---------------------------------------*/
/*---------------------------------------------------------------------*/
回复96帖
2018/04/18 12:59:15 101帖 yueyunno1 师长
主程序中用了C语言的三目运算,特别在复杂程序用用三目运算容易阅读,一下贴出常规写法
主程序也可以写成这样:
while(1)
{
for(i=255;i>0;i--)
{
if(j<i)
PORT_2=0X00;
else
PORT_2=0XFF;
}
if(j<255)
j++;
else
j=0;
}
|