一、实验目的
1、掌握P3口、P1口简单使用。
2、学习延时程序的编写和使用。
二、实验内容
1、实验原理图:
2、实验内容
(1)P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加1。
(2)P1口做输出口,编写程序,使P1口接的8个发光二极管L1—L8按16进制加1方式点亮发光二极管。
3、实验说明
(1)P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
(2)延时子程序的延时计算问题。对于延时程序
DELAY :MOV R6, #00H
DELAY1:MOV R7, #80H
DJNZ R7, $
DJNZ R6, DELAY1
查指令表可知MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/ 6.0MHZ,所以该段指令执行时间为:
((80+1)×256+1)×2×(12÷6000000)=132.1ms
三、程序
程序清单:
ORG 0540h
HA1S: MOV A,#00H
HA1S1: JB P3.3,HA1S1
MOV R2,#20H
LCALL DELAY
JB P3.3,HA1S1
HA1S2: JNB P3.3,HA1S2
MOV R2,#20H
LCALL DELAY
JNB P3.3,HA1S2
INC A
PUSH ACC
CPL A
MOV P1,A
POP ACC
AJMP HA1S1
DELAY: PUSH 02H
DELAY1: PUSH 02H
DELAY2: PUSH 02H
DELAY3: DJNZ R2,DELAY3
POP 02H
DJNZ R2,DELAY2
POP 02H
DJNZ R2,DELAY1
POP 02H
DJNZ R2,DELAY
RET
END
四、实验步骤
①P3.3用插针连至K1, P1.0—P1.7用插针连至L1—L8。
②从起始地址0540H开始连续运行程序(输入0540后按EXEC键)。
③开关K1每拨动一次,L1—L8发光二极管按16进制方式加一点亮。
关键字:IO口
引用地址:
8031单片机I/O口使用
推荐阅读最新更新时间:2024-03-16 12:41
AVR第8课:独立按键
值得注意的是,独立按键的检测原理和消抖处理在51单片机中已经讲过了,这些东西都不会变。只是AVR单片机的IO口操作方式改变了。在AVR中,检测方式是:首先让将和独立按键相连接的IO口设置成输出高电平,接着将他们设置成输入模式,再然后检测这些IO口的值。 代码1:检测是哪一个按键被按下。这里不需要用到消抖动处理。 #include iom16v.h #include macros.h #define uint unsigned int #define uchar unsigned char uchar table = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80}; void
[单片机]
STM32的GPIO口的8种配置模式
一、 STM32的输入输出管脚有下面8种(4输入+2输出+2复用输出)可能的配置: ① 浮空输入_IN_FLOATING ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP ⑦ 复用功能的推挽输出_AF_PP ⑧ 复用功能的开漏输出_AF_OD 1.1 I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程
[单片机]
I2C串行总线在单片机8031应用系统中的设计与实现
1 I2C总线概述 I2C (inter IC bus)总线是由Philips公司提出的串行通信接口规范,常见的中文译名有“集成电路间总线”或“内部集成电路总线”。它使用两条线:串行数据线(SDA)和串行时钟线(SCL),使连接到该总线上可访问的器件之间传送信息,属于多主控制总线。总线上的每个器件均可设置唯一的地址,从而可实现器件的有效访问。自Philips公司推出I2C总线后,Philips公司及其他公司纷纷相继推出了许多I2C总线产品,如各种微处理器、存储器(PCF8571/8570,128/256 字节)、A/D(PCF8591)、D/A(TDA8442/8444)转换器、E2PROM及各种I2C总线接口电路(PCF8
[单片机]
GPIO口模拟I2C
根据I2C通信规范(具体可以参考“ 浅谈I2C总线 ”),通过普通IO端口模拟可以实现单片机(主设备)与从设备的I2C通信,其中SCL通过IO口延时高低电平变化实现,SDA根据SCL状态变化产生开始信号,结束信号,以及实现发送接收数据等,以下是相关代码 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * @Purpose: I2C Communication driver(By IO) * @Author: Purple * @Version: 1.0 * @Date: Create By Purple 2
[单片机]
STM32的IO口输入输出模式的理解
最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高
[单片机]
STM32用IO口控制步进电机的简单程序
练习IO口库函数操作。 //相序 uint16_t phasecw ={0x2000,0x0001,0x0004,0x0008};// D-C-B-A uint16_t phaseccw ={0x0008,0x0004,0x0001,0x2000};// A-B-C-D //步进电机相关IO口初始化 // IN4: PC13 // IN3: PC0 // IN2: PC2 // IN1: PC3 void Moto_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph
[单片机]
51单片机IO口模拟串口通讯的设计
#include sbit BT_SND =P1^0; sbit BT_REC =P1^1; IO 口模拟232通讯程序 使用两种方式的C程序 占用定时器0 #define MODE_QUICK #define F_TM F0 #define TIMER0_ENABLE TL0=TH0; TR0=1; #define TIMER0_DISABLE TR0=0; sbit ACC0= ACC^0; sbit ACC1= ACC^1; sbit ACC2= ACC^2; sbit ACC3= ACC^3; sbit ACC4= ACC^4; sbit ACC5= ACC^5; sbit ACC6= ACC^6; sbit AC
[单片机]
stm32之按键实验
前言:这个实验比较简单,就是对io口的配置。 实验现象 up键用来打开led灯,down键用于关闭led灯,left键用于打开蜂鸣器,right用于关闭蜂鸣器。 操作步骤 1.初始化用到的io口 void key_init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//打开io口的时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);//打开io口的时钟 GPIO
[单片机]