赞
踩
(1) I/O输出/输出(Input/Output)的简称主要用于工业现场需要用到数字量输入/输出的场合
(2)并行I/O接口是实际应用中使用最多、最普遍的接口类型,开关量的输入/输出都是通过并行I/O接口实现的。
(1)点亮其中某个LED灯:以L1灯为例,其他LED保持熄灭
(2)点亮其中某个LED灯:以L6灯为例,其他LED保持熄灭
(4)多个LED交替闪烁:以L1灯和L2灯交替闪烁为例,其他LED保持熄灭
(5)多个LED交替闪烁:以L1灯和L2灯交替闪烁为例,其他LED保持熄灭(采用sbit关键字)
(6)流水灯(也称跑马灯),若干个LED依次点亮:以开发板上的8个LED诸葛点亮,循环不止。
(8)点亮一个LED(并口控制方式):以点亮L1、L8为例(涉及sfr关键字)
从物理学角度来理解:当电流通过晶片时,N型半导体内的电子与P型半导体内的空穴在发光层剧烈地碰撞复合产生光子,以光子的形式发出能量(即大家看见的光)
通常情况下,LED的负极接地,正极接芯片的IO口
输出功能:继电器、LED、蜂鸣器等的控制
输入功能:传感器状态、高低电平等信息的读取
复用功能:片内外设的对外接口
时序模拟:模拟SPI、I2C、和UART灯常用接口的时序
- //头文件声明区域
- #include <STC15F2K60S2.H>
- //变量声明区域
-
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P00 = 0;//点亮L1(单个赋值)
-
- }
-
-
- }

- //头文件声明区域
- #include <STC15F2K60S2.H>
- //变量声明区域
-
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P05 = 0;//点亮L6(单个赋值)
-
- }
-
-
- }

- //头文件声明区域
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- //变量声明区域
-
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
-
- _nop_();
- _nop_();
- i = 22;
- j = 3;
- k = 227;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
-
-
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P05 = 0;
- Delay500ms();
- P05 = 1;
- Delay500ms();
- }
-
-
- }

- //头文件声明区域
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- //变量声明区域
-
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
-
- _nop_();
- _nop_();
- i = 22;
- j = 3;
- k = 227;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
-
-
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P00 = 0;
- P01 = 1;
- Delay500ms();
- P00 = 1;
- P01 = 0;
- Delay500ms();
- }
-
-
- }

- //头文件声明区域
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- //变量声明区域
- sbit LED2 = P0^1;
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
-
- _nop_();
- _nop_();
- i = 22;
- j = 3;
- k = 227;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
-
-
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P00 = 0;
- LED2 = 1;
- Delay500ms();
- P00 = 1;
- LED2 = 0;
- Delay500ms();
- }
-
-
- }

- //头文件声明区域
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- //变量声明区域
- unsigned char LED = 0xfe; //LED数据变量
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
-
- _nop_();
- _nop_();
- i = 22;
- j = 3;
- k = 227;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
-
-
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P00 = 0;P01 = 1;P02 = 1; P03 = 1; P04 = 1;P05 = 1;P06 = 1;P07 =1;
- Delay500ms();
- P00 = 1;P01 = 0;P02 = 1; P03 = 1; P04 = 1;P05 = 1;P06 = 1;P07 =1;
- Delay500ms();
- P00 = 1;P01 = 1;P02 = 0; P03 = 1; P04 = 1;P05 = 1;P06 = 1;P07 =1;
- Delay500ms();
- P00 = 1;P01 = 1;P02 = 1; P03 = 0; P04 = 1;P05 = 1;P06 = 1;P07 =1;
- Delay500ms();
- P00 = 1;P01 = 1;P02 = 1; P03 = 1; P04 = 0;P05 = 1;P06 = 1;P07 =1;
- Delay500ms();
- P00 = 1;P01 = 1;P02 = 1; P03 = 1; P04 = 1;P05 = 0;P06 = 1;P07 =1;
- Delay500ms();
- P00 = 1;P01 = 1;P02 = 1; P03 = 1; P04 = 1;P05 = 1;P06 = 0;P07 =1;
- Delay500ms();
- P00 = 1;P01 = 1;P02 = 1; P03 = 1; P04 = 1;P05 = 1;P06 = 1;P07 =0;
- Delay500ms();
-
-
- }
-
-
- }

- /头文件声明区域
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- //变量声明区域
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P0 = OXFE;// 1111 1110
-
- }
-
-
- }

- //头文件声明区域
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- //变量声明区域
- sfr LED = 0x80;
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
-
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- LED = 0x7e;//0111 1110
-
-
- }
-
-
- }

- sfr <register> = <address>;
-
- //<register> 是你定义的变量名称,用于访问特殊功能寄存器;
- //<address> 是特殊功能寄存器的物理地址。
- //头文件声明区域
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- //变量声明区域
- unsigned char LED = 0xfe; //LED数据变量
- //函数定义区域
- //关闭蜂鸣器
- void cls_buzz(void)
- {
- P2 = (P2 & 0x1F | 0xA0);
- P0 = 0x00;
- P2 &= 0x1F;
- }
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
-
- _nop_();
- _nop_();
- i = 22;
- j = 3;
- k = 227;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
-
-
-
- //程序主体
- void main()
- {
- cls_buzz();
- //初始化部分
- P2 = 0xA0;
- P0 = 0x00;
- P2 = 0X80;
- P0 = 0xFF;
- while(1)
- {
- P0 = LED;
- Delay500ms();
- LED = _crol_(LED,1);
- Delay500ms();
-
- }
-
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。