找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 164|回复: 1
收起左侧

大神帮忙看看这个单片机IO端口扫描程序能不能正常运行

[复制链接]
ID:1001745 发表于 2024-4-10 21:31 | 显示全部楼层 |阅读模式
单片机程序需要实现的功能:
  按键K1按下之后,STC8H1K28的P1和P2口需要分别从低至高输出低电平后然后全部返回高电平。
代码如下:
#include"stc8h.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define KEY_PORT  P1    //宏定义P1端口为KEY_PORT
#define key1_PORT P2
sbit key = P0^0;
void delay_10us(u16 us)      //延时10us的函数
{
        while(us--);
}
u8 key_scan()
{
        if(key==0);
        {
                delay_10us(1000);
                if(key==0)
                {
                        KEY_PORT=~0x01;
                        delay_10us(50000);
                        key1_PORT=~0x01;
                        delay_10us(50000);
                        while(key==0);
                }
               
        }
}
void main()
{
        u8 i=0;
        P0M0=0X00;
        P0M1=0X00;               //设置PO端口为准双向模式
        P1M0=0xff;
        P1M1=0x00;               //设置P1端口为强推挽模式
        P2M0=0xff;
        P2M1=0x00;               //设置P2端口为强推挽模式
        
        while(1)
        {
                key_scan();
                for(i=0;i<7;i++)
                {
                        KEY_PORT=_crol_(KEY_PORT,1);
                        delay_10us(50000);
                }
                for(i=0;i<7;i++)
                {
                        key1_PORT=_crol_(key1_PORT,1);
                        delay_10us(50000);
                }
        }        
}


菜鸟一枚,以上程序也是根据网上教材及视频东拼西凑的,
欢迎大神帮忙指正。谢谢!
回复

使用道具 举报

ID:1001745 发表于 2024-4-10 21:33 | 显示全部楼层
主篇幅限制,附上原理图
图片1.png
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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