㈠ 大家好:51单片机c语言中判断任意一个IO口"P0>=1"怎样编写
if(P0 & 0x07) //只判断 P00 P01 P02为高
{
P0=0xff; P1=0xff;//切换模式后数据清零
}
delay_ms(1000);
P1=~P1; P0=~P0;
㈡ 51单片机检测引脚电平变化的C语言程序
#include <reg52.h>
sbit LED0 = P0^0; sbit LED1 = P0^1; sbit LED2 = P0^2; sbit LED3 = P0^3;
sbit LED4 = P0^4; sbit LED5 = P0^5; sbit LED6 = P0^6; sbit LED7 = P0^7;
sbit LED10 = P1^0;
void main() {
LED0 = 0; LED1 = 0; LED2 = 0; LED3 = 0; LED4 = 0; LED5 = 0; LED6 = 0;
LED7 = 0;
LED7 = 1;//假设有变化
if(LED7) {
LED10 = 1;
LED0 = 1; LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1; LED5 = 1; LED6 = 1; }
}
㈢ c语言51 io口程序设计
//下列程序基本正确,剩下一些脉冲宽度定时,可自行完成。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit k_1 = P3^0; //第一个输入
uchar t_10ms, k3;
//--------------------------------------
DL_x_10ms(uchar x)
{
t_10ms = 0;
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256; //定时10ms@12MHz
TR0 = 1; //启动定时.
while(t_10ms < x); //不到x*10ms,原地等待.
TR0 = 0; //关闭定时.
}
//--------------------------------------
void main(void)
{
TMOD = 01; //T0定时方式1
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256; //定时10ms@12MHz
TR0 = 0; //暂时不启动.
ET0 = 1;
IT0 = 1;
IT1 = 1;
EX0 = 0;
EX1 = 0;
EA = 1;
k3 = 1;
while(1) { //
//--------------------------------------
while((k_1 == 1) || (k3 == 0));//K1没有按,或者 K3尚未执行 原地等待.
//K1按了一次,就往下执行.
while(k_1 == 0); //等待K1释放.
k3 = 0; //以后K1按下两次、三次...,也不会执行.
//进入第一个中断,P0.0口输出低电平,P0.1口输出高电平,延时1.5S后P0.0口输出高电平。.
P00 = 0; P01 = 1;
DL_x_10ms(150);
P00 = 1;
EX0 = 1; //开放INT0(K2)中断
//循环到前面,等待(K1按下且K3=1)
}
}
//--------------------------------------
T0_INT() interrupt 1
{
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256; //定时10ms@12MHz
t_10ms++;
}
//--------------------------------------
X0_INT() interrupt 0 //K2输入下降沿,将进入本函数
{
//进入第二个中断,延时1.11S后P0.2口输出低电平,然后.
DL_x_10ms(111);
P02 = 0; //P0.2口输出低电平
//输出低电平多少时间?题目没有说。
//---------------------
//高0.15S,
P02 = 1; //P0.2口输出高.
DL_x_10ms(15);
//---------------------
//低0.3S,
P02 = 0; //P0.2口输出低电平.
DL_x_10ms(30);
//下面的定时,可以自行编写
//高0.3S,
//低0.58S,
//高0.12S,
//低1.08S,
//高2.55S,
//低0.47S,
//高0.075S,高低电平很多次这样。.
EX0 = 0;
EX1 = 1; //开放INT1(K3)中断
}
//--------------------------------------
X1_INT() interrupt 2
{
//当进入第三个中断,P0.1口输出低电平。.
P01 = 0;
EX1 = 0;
k3 = 1; //=1,将在主函数中有用
}
//--------------------------------------
㈣ 单片机怎么用c语言设置I/O口输入或输出
IO口的输入输出是通过对单片机寄存器的配置来实现的。
C51的单片机IO口本来就是双向的不需要设置。
STM32单片机的IO口用C语言的设置方法如下:
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_Structure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//PC10-LED(指示灯)
GPIO_Structure.GPIO_Pin = GPIO_Pin_10;
GPIO_Structure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_Structure); //LED
}
㈤ 单片机脉冲计数问题(C语言)
设计数值为num
num=0;
P0^0=jishu;
jishu=1;检测低电平IO要设置高
main()
{
if(jishu==0)
{
num++;
whlie(jishu==0);为了防止P0^0一直为低电平num一直在加
}
if(num==9990)
{
P0^1=0;
num=0;继续下一轮计数
}
}
㈥ 51单片机怎么用c语言写一个按钮控制一个led的闪烁,按一下开始闪烁,再按就灭掉
bit flash;//闪烁标志位
sbit led=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
void main()
{
P01=P02=0;
flash=0;
led=0;
while(1)
{
scankey();
ledflash();
}
}
void scankey()//键盘扫描
{
P01=1;//行线给1
if(P02)//如果P02也是1则说明接通
{
delay(10);//去抖动10MS
if(P02)//再次确定按键按下
{
while(P02){flash=flash}//按住按键的动作
flash=~flash;//按键按下后执行动作
}
}
}
void ledflash()
{
if(flash)
{
led=1;//点亮
delay(100);//延时100MS
led=0;//熄灭
}
else led=0;
}
void delay(unsigned int i)
{自己根据单片机频率写个1MS带形参的演示程序}
这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)
㈦ C语言程序指针p[-1] 表示什么意思呀
呵呵,程序中出现这种用法说明这个程序员比较自我。一般不见以这样用。
要根据上下文判断才知道,不过从字面意思来说就是去p所代表的内存地址的前一块。
比如:
int num[10] = {0,1,2,3,4,5,6,7,8,9};
int *p = num+2;//此时p代表的是num[2]的地址,p[0]就是num[2],p[-1]就是num[1],p[-2]就是num[0];
但是p[-3]就错了,因为你访问了一个未知的地址,会出现严重错误的。
㈧ 单片机c语言中的外部中断
如楼上所说,要实现可以,不过不知道用意何在
int x;
void shizhong() interrupt 1
{
x=1;
while(x==1)
{
flag=1;
}
}
void kaishi() interrupt 0
{
x=0;
// while(x==0) 你要一直停在外部中断0,加上这句;
//{
k=0;
// }
}
㈨ 使用DEV CPP ,源文件后缀名是大写的C时,如 p01.C 那么system("pause")函数无法编译
dev cpp的后面的编译器是gcc gcc会对后缀是小写的c做一些额外的事情 cpp也是一样的 但大写的可能就当成普通文件了
㈩ 计算机c语言中 指针变量p自增1 什么意思
自增就是+1的意思,地址+1就是指向下一个元素。例如
int array[3]={1,2,3};
int*p=array;//此时p指向array[0]
p++;//这里的p自增,执行后p指向array[1]