找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5076|回复: 10
收起左侧

小白请教STC11L08XE如何设置推挽输出

[复制链接]
ID:262558 发表于 2018-1-15 19:17 | 显示全部楼层 |阅读模式
STC11L08XE单片机,请问如何设置推挽输出?急,在线等。
回复

使用道具 举报

ID:203000 发表于 2018-1-16 00:50 | 显示全部楼层
看你要设哪个端口,例如P1
void port_mode()            // 端口模式
{
        P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0xFF;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
        P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0xFF;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00;
void main()
{
//void port_mode()
回复

使用道具 举报

ID:213173 发表于 2018-1-16 09:25 | 显示全部楼层
PxM0=0x00; //准双向
PxM1=0x00;

PxM0=0x11;//强推挽
PxM1=0x00;

PxM0=0x00;//高阻
PxM1=0x11;

PxM0=0x11;//开漏
PxM1=0x11;
回复

使用道具 举报

ID:276580 发表于 2018-1-16 15:08 | 显示全部楼层
查看器件手册,配置寄存器
回复

使用道具 举报

ID:46999 发表于 2018-1-16 15:58 | 显示全部楼层
坛上就有大侠写了个设置的软件。分享给你

STC单片机IO口设置.rar

275.1 KB, 下载次数: 116

回复

使用道具 举报

ID:46999 发表于 2018-1-16 16:00 | 显示全部楼层
软件的界面

软件界面

软件界面
回复

使用道具 举报

ID:272625 发表于 2018-2-25 17:59 | 显示全部楼层
维超 发表于 2018-1-16 15:58
坛上就有大侠写了个设置的软件。分享给你

我有帮助,非常感谢!
回复

使用道具 举报

ID:272625 发表于 2018-2-25 18:01 | 显示全部楼层
/*********************************************************************************************
                                   DB1-010 感应式阅读灯   
STC11L08XE单片机:

PxM0=0x00; //准双向  
PxM1=0x00;

PxM0=0x11;//强推挽   
PxM1=0x00;

PxM0=0x00;//高阻  
PxM1=0x11;

PxM0=0x11;//开漏  
PxM1=0x11;
   
程序功能:   
 1.首次开灯时,为最高亮度.
 2.手压在外壳上方时,LED会逐渐变暗至最低亮度.
  3.手放开时,LED会保持在当前亮度.
  4.再次压住外壳,LED将会逐渐变亮至最大亮度.
  5.DYS412红外传感器,平时输出高电平,有反射信号输出低电平.   
  6.可开关和无极调光.                                                                 
/*********************************************************************************************
说明:

/*********************************************************************************************/
#include <DB1.H> //STC11Fxx或STC11Lxx系列单片机头文件 #include<reg52.h>   
#include <intrins.h>        //51基本运算(包括_nop_空函数)
#define LED P20 //灯组1
#define DYS412 P45 //DYS412传感器输入

unsigned char MENU;

/*********************************************************************************************
函数名:毫秒级CPU延时函数
调  用:DELAY_MS (?);
参  数:1~65535(参数不可为0)
返回值:无
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){
        unsigned int i;
        while( a-- != 0){
                for(i = 0; i < 600; i++);
        }
}
/*********************************************************************************************/
void DELAY (unsigned char a){//颜色PWM用延时
        unsigned char i;
        while( a-- != 0){
                for(i = 0; i < 2; i++);
        }
}
/*********************************************************************************************/
void LEDPWM (unsigned char i,unsigned char a){//显示程序(需不断调用)
        unsigned char x;
        for(x=0;x<a;x++){//设置循环显示次数
                LED = 0;
                DELAY (i);
                LED = 1;
                DELAY (255-i);
        }
}
/*********************************************************************************************/
void init (void){ //初始IO程序
        P4SW = 0xff; //启动P4接口
        P0M0 = 0x00; //设置I/O口工作方式(推挽)
        P0M1 = 0x00; //设置I/O口工作方式(高阻)
        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
}
/**********************************************************************************************/
void main (void){
        unsigned char DY_PWM;
        unsigned int c;
        bit ONOFF;//开/关灯标志位
        bit aad;//调光加减标志位
        DELAY_MS (500);
        init();//初始程序
        ONOFF = 0;c = 0;DY_PWM = 255;
        while(1){
                if(ONOFF==1){//灯开关控制位
                        LEDPWM(DY_PWM,1);//调光程序
                }
                if(DYS412==0){//按键/感应 处理程序部分
                        while(DYS412==0&&c<800){//长按到时跳转
                                c++;LEDPWM(DY_PWM,1);
                        }
                        if(c>700){//长键处理
                                while(DYS412==0){
                                        if(aad){
                                                DY_PWM++;
                                                if(DY_PWM>254){
                                                        LEDPWM(210,30);
                                                        DY_PWM=254;
                                                }
                                                LEDPWM(DY_PWM,20);
                                        }else{
                                                DY_PWM--;
                                                if(DY_PWM<2){
                                                        LEDPWM(3,30);
                                                        DY_PWM=2;
                                                }       
                                                LEDPWM(DY_PWM,20);
                                        }
                                }
                                aad=~aad;//下次调光时是反向调整的
                                ONOFF = 1;//调光后必然是开灯状态的
                        }else{//短键处理
                                ONOFF=~ONOFF;
                                while(DYS412==0)LEDPWM(DY_PWM,1);
                        }
                        c=0;
                }
        }
}
回复

使用道具 举报

ID:272625 发表于 2018-2-25 18:02 | 显示全部楼层
别人写的代码楼主参考下
回复

使用道具 举报

ID:377872 发表于 2018-8-1 16:05 | 显示全部楼层
qiangcn 发表于 2018-1-16 00:50
看你要设哪个端口,例如P1
void port_mode()            // 端口模式
{

要加在哪里?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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