C8051F系列单片机如何检测IO口(P13)边沿触发变化

C8051F系列单片机如何检测IO口(P13)边沿触发变化,第1张

我不止一次遇到骗子,得了答案走人了,分数只是诱饵。我不在意分数,但会有一种被人耍了的感觉。希望你不是那样的人。

C8051F系列是一款功能丰富、使用灵活的单片机,交叉开关是它的一个特色,为布板、编程提供了方便性。正因为灵活,初次使用或有些不适应。

就你的具体问题,传统单片机只有一种方法---查询。C8051F就不同了,有多种方法实现,查询、外部中断、端口比较中断、计数器中断都可以,对速度要求不高还可以使用ADC中断。这些你深入了解后会觉得C8051F真的很强大,要多看手册才能深入领会。

这里给你一种最简单的,查询方法。

//引用外部头文件

#include "\config\c8051f350h"

void main(void)

{

P1MDIN = 0XFF; //端口1输入方式配置寄存器,全部不配置为模拟输入

P1MDOUT = 0X00; //端口1输出方式配置寄存器,全部配置为漏极开路输出

P1 = 0XFF;

XBR0 = 0X00; //端口I/O 交叉开关控制0,外设不连接引脚

XBR1 = 0X40; //端口I/O 交叉开关控制1,交叉开关使能,弱上拉使能

while(1)

{

if (P1^3 = 0) //检查P13下降沿

{

//这里放入你要执行的程序

while(!P1^3) //等待上升沿

}

}

}

说好200分的……

#include "reg52h"

const unsigned char LED7Code[]={ //共阴极7段显示

0x3F, // 0

0x06, // 1

0x5B, // 2

0x4F, // 3

0x66, // 4

0x6D, // 5

0x7D, // 6

0x07, // 7

0x7F, // 8

0x6F // 9

};

void delay(unsigned int i) /延时1014i+13 机器周期/

{ int j;

for(;i>0;i--)

for(j=0;j<125;j++);

}

void delayus(unsigned char i) /延时8i+10 机器周期/

{while(i>0)

i--;

}

sbit start=P3^0;

sbit clk=P3^3;

sbit eoc=P3^2;

sbit oe=P3^1;

sbit add1=P3^4;

sbit add2=P3^5;

sbit add3=P3^6;

sbit key1=P2^5;

sbit key2=P2^6;

main()

{

unsigned char i,j=0;

long U=0;

unsigned char flag=0; //循环与否标志

unsigned char key1_tmp=1,key2_tmp=1; //两个按键状态暂存

while(1)

{

add1=j%2;add2=0;add3=0; //通道地址

clk=1;

start=0;

start=1;

start=0; //启动转换

eoc=1;

clk=0; delayus(5); //clk信号下降沿对eoc信号线进行检测

while(!eoc)

{

clk=1; delayus(5);

clk=0; delayus(5);

eoc=1;

}

oe=1; //0808输出允许

P0=0xff; //单片机从P0口读取数据

U=P05L100/256;

for(i=0;i<100;i++)

{

P1=LED7Code[j%2]; P2=0xfe; delay(1); P1=0;

P1=LED7Code[U/100]|0x80; P2=0xfd; delay(1); P1=0; //|0x80目的是加小数点

P1=LED7Code[U%100/10]; P2=0xfb; delay(1); P1=0;

P1=LED7Code[U%10]; P2=0xf7; delay(1); P1=0;

key1=1; //按键1

if(!key1&&key1_tmp)

{flag=!flag;key1_tmp=key1;break;} //当按键1检测到下降沿时,循环标志置取反

key2=1; //按键2

if(!key2&&key2_tmp)

{j++;key2_tmp=key2;break;} //当按键2检测到下降沿时,通道地址加一

key1_tmp=key1;

key2_tmp=key2;

}

if(flag)

j++; //通道地址加一

}

}

以上就是关于C8051F系列单片机如何检测IO口(P13)边沿触发变化全部的内容,包括:C8051F系列单片机如何检测IO口(P13)边沿触发变化、单片机双路数字电压表,之前一哥们给的程序如下可以实现循环测量显示IN0,IN1电压,现要求如下、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10632888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存