找回密码
 立即注册

QQ登录

只需一步,快速开始

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

想用两个单片机IO口做输入,一个IO口做输出 求指正程序

[复制链接]
跳转到指定楼层
楼主
ID:807229 发表于 2020-8-15 12:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想用两个IO口做输入 一个IO口做输出 思路是先判断RA1的电平 高电平 RA4=1点亮LED 延时500MS 再判断RA0电平(上电瞬间RA0的电位由0变为1,所以考虑延时500ms再判断) 如果RA0为高电平 RA4继续点亮LED 并保持 当RA1或者RA0的电平发生变化不满足条件时 RA4为低电平 led熄灭 实测发现RA1==1 RA4=1 RA1==0 RA4延时500MS led熄灭功能没有问题 但是上电时如果RA1==1 RA0==0 RA4输出为低电平无法点亮led并延时 以下是程序 请师傅给指正 指教一下 谢谢
/**********************************************************
*文件名:MS80F_IO_OUTPUT_TEST.C
*功能:MS80Fxx01的IO输出功能演示
*器件型号:MS80F0801
*振荡器:内部RC 4MHz
*引脚定义:
*                 ----------------
*  VDD-----------|1(VDD)   (GND)16|------------GND
*  NC------------|2(RA2)   (RA4)15|---------OUTPUT
*  NC------------|3(RA1)   (RA5)14|-------------NC
*  NC------------|4(RA3)   (RA0)13|-------------NC
*                 ----------------
*                 MS80F0801 SOP8
*说明:设置RA4为输出脚,每秒电平翻转一次
**********************************************************/
#include
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:807229 发表于 2020-8-15 12:44 | 只看该作者
/**********************************************************
*文件名:MS80F_IO_OUTPUT_TEST.C
*功能:MS80Fxx01的IO输出功能演示
*器件型号:MS80F0801
*振荡器:内部RC 4MHz
*引脚定义:
*                 ----------------
*  VDD-----------|1(VDD)   (GND)16|------------GND
*  NC------------|2(RA2)   (RA4)15|---------OUTPUT
*  NC------------|3(RA1)   (RA5)14|-------------NC
*  NC------------|4(RA3)   (RA0)13|-------------NC
*                 ----------------
*                 MS80F0801 SOP8
*说明:设置RA4为输出脚,每秒电平翻转一次
**********************************************************/
#include        "syscfg.h";
#include         "MS80Fxx01.h";
/*====================================================
*函数名:interrupt ISR
*功能:中断服务函数
*输入参数:无
*返回参数:无
====================================================*/
void interrupt ISR(void)
{

}
/*====================================================
*函数名:DEVICE_INIT
*功能:上电器件初始化
*输入参数:无
*返回参数:无
====================================================*/
void DEVICE_INIT(void)
{
        OSCCON = 0B01010001;        //Bit7:WDT振荡器频率=32KHz
                                                        //Bit6:4:内部RC频率=4MHz
        MSCKCON = 0B00010000;        //Bit6:禁止稳压输出
                                                        //Bit5:Timer2时钟源为系统时钟
                                                        //Bit4:使能LVR(注意:此位与配置位配合使用)
        INTCON = 0B00000000;        //暂禁止所有中断

        OPTION = 0B00001000;        //Bit4=1 WDT MODE,PS=000=1:1 WDT RATE

        PORTA = 0B00000000;
        TRISA = 0B00101111;         //PA输入输出 0-输出 1-输入
        WPUA = 0B00000000;                //PA端口上拉控制 1-开上拉 0-关上拉
}

/*====================================================
*函数名称:DELAY_1MS
*功能:短延时函数(4MHz4T)
*输入参数:Time延时时间长度,延时时长Time1Ms
*返回参数:无
====================================================*/
void DELAY_10MS(void)
{
        unsigned char a;

        for(a=0;a<125;a++)
        {
                CLRWDT();
        }
}

/*====================================================
*函数名称:DELAY_MS
*功能:短延时函数
*输入参数:Time延时时间长度,延时时长Time ms
*返回参数:无
====================================================*/
void DELAY_MS(unsigned char Time)
{
        unsigned char a;

        for(a=0;a<Time;a++)
        {
                DELAY_1MS();
        }
}

/*====================================================
*函数名:main
*功能:主函数
*输入参数:无
*返回参数:无
====================================================*/
void main(void)
{
        DEVICE_INIT();     //器件初始化
        while(1)
        {
                CLRWDT();
                if(RA1==1)
                {
                        RA4 = 1;
            DELAY_1MS(250);
            DELAY_1MS(250);
         }
             if(RA0==1)
         {
                        RA4 =1;
            }
               else
                {
                        RA4 = 0;
}

}
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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