单片机第三讲

合集下载

中职单片机 第三讲 数制转换

中职单片机 第三讲 数制转换

思考:1001011B=(
)H
最偷懒的方法:使用windows自带计算器
四、单片机中十六进制的表示
格式:0x 如:1010 1010=0xaa 1100 1001=0xc9 课堂练习:1000 0001=? 1100 1100=? 0011 1100=? 答案: 1000 0001=0x81 1100 1100=0xcc 0011 1100=0x3制的相互转换 “8421”法(重点) 单片机中十六进制的表示
一、二-十进制的相互转换
1、十进制(D) 1)基本数码:0、1、2、3、4、5、6、7、8、9 2)逢十进一
2、二进制(B) 1)基本数码:0、1 2)逢二进一
3、二进制转十进制 方法:从二进制数最右一位数数起,依次乘 上2n(n=0,1,2……n) 应用举例:11010 11010B=1x24+1x23+0x22+1x21+0x20 =16+8+0+2+0=26 11010B=26D(D通常可以不用写)
4、十进制转二进制 方法:将十进数不断除2,下方写商,能除尽在旁 边0,不能除尽写1,最后将余数从下到上依次 排列即可。 应用举例:100D=( 1100100 )B
2 100 0
2 2 2
2 2
50
25
0
1 0
12 6
3 1
0
1
从 下 往 上
二、二-十六进制的相互转换 1、十六进制(H)基本数码:0、1、2、3、4、5、6、 7、8、9、A、B、C、D、E、F 2、逢十六进一 3、二-十六进制相互转换(非常重要) 方法:将二进制数从右往左每四位为一组,分别 换算为十六进制数码后组合即可。 应用举例:10 1101 1001 分为三组,分别是10、1101、1001 (10)B=1x21+0x20=(2)H (1101)B=1x23+1x22+0x21+1x20=(D)H (1001)B=1x23+0x22+0x21+1x20=(9)H (10 1101 1001)B=(2D9)H

03 第三讲 数字电路基础知识--力天手把手教你学单片机之入门篇

03 第三讲 数字电路基础知识--力天手把手教你学单片机之入门篇

手把手教你学51单片机——之MCS-51入门篇主讲: 尹延辉策划:张勇开发板:LT-Super51QQ群:31646346网址:E-Mail:litianmcu@litianmcu@入门篇第三讲——数字电路基础知识☐本讲内容提要数字量和模拟量数制和码制算术运算和逻辑运算数字芯片常用数字芯片简介可编程逻辑器件存储器学习板上扩展IO口的实现——数字量和模拟量☐数字量和模拟量定义模拟量:随时间连续变化的电压或电流信号称之为模拟量 数字量:随时间离散变化的量称之为数字量•数字量的实质为加入判决门限的模拟量——数字电路’0’与’1’的定义☐数字电路’0’与’1’的定义TTL电平:电压+5V代表’1’,电压0代表’0’ LVTTL:+3.3V~’1’,0~’0’RS232:-15V~’1’,+15V~’0’LVDS:2根线上电压差的正负表示’1’或’0’——数制和码制☐数制的定义计数过程中一位数字通常是不够用的,多位数码中每一位的构成方法及从低位向高位进位规则称为数制。

N进制数的通俗定义:逢N进1•十进制:逢十进一•十六进制:逢十六进一•二进制:逢二进一☐常用数制十进制、二进制、十六进制•人类有十个指头,所以习惯采用十进制•计算机只能识别0和1,采用二进制•为了计算机学中的数据书写方便,采用十六进制——数制转换详解☐数制间的转换二-十转换十-二转换二-十六转换十六-二转换☐位与字节的概念:位(bit):简写为b,表示二进制数的一位。

字节(Byte):简写为B,8位为一字节。

☐数制转换工具:Windows自带的计算器——算术运算与逻辑运算☐二进制算术运算数之间的数值运算(加减乘除)逢二进一☐二进制逻辑运算‘1’表示真,’0’表示假三种基本运算:与,或,非•与运算:•或运算:•非运算:•异或运算: 逻辑代数的图形符号 组合逻辑 真值表Y A B =∙Y A B =+Y A=Y A B=⊕A B Y 000010100111A B Y 000011101111A Y 0110——数字芯片☐数字芯片入门知识正逻辑与负逻辑二极管开关电路三极管开关电路二极管开关电路三极管开关电路三极管开关等效电路——数字芯片☐最简单的门电路二极管与门电路 二极管或门电路三极管非门电路二极管或门电路二极管与门电路三极管非门电路——数字芯片☐TTL与CMOS电路常用的数字芯片有74系列与CD系列右下角引脚是GND左上角引脚(最后一脚)是VCC区别TTL电路(74HCxx)CMOS电路(CDxxxx)内部结构三极管MOS管电源电压2~6V3~18V输入高电平>3V>3.5V (VCC=5V)输入低电平<1.2V<1V(VCC=5V)——常用数字芯片简介☐LT-Super51学习板上用到的数字芯片 74HC138:3-8译码器74HC02:4X2输入或非门74HC573:8路锁存器/8路D触发器CD4068:8输入与非门CD4066:4路模拟开关——可编程逻辑器件☐CPLD与FPGA基本原理:可编程的门电路•在一块芯片上集成大量门电路与触发器,相互间连线可通过编程改变2种开发模式:图形VS硬件描述语言•基本的门电路、触发器组合•VHDL语言、VerilogHDL语言四大生产商:•Altera•Xilinx•Actel•LatticeAltera的CPLD/FPGA开发工具•上位机软件QuartusII:编译与下载•下载线:ByteBlusterMV/ByteBlusterII——存储器☐存储器类型易失型:掉电后内部数据会丢失•SRAM :读写速度快,但容量小(<1M 字节)。

MSC-51单片机基本结构——第3讲

MSC-51单片机基本结构——第3讲
上拉电阻组成。 2.工作过程分析 (1)P3口用作第二输入/输出功能
当选择第二输出功能时,该位的锁存器需要置“1”, 使“与非门”为开启状态。当第二输出为1时,场效应管截 止,P3.x引脚输出为1;当第二输出为0时,场效应管导通, P3.x引脚输出为0。
当选择第二输入功能时,该位的锁存器和第二输出功能 端均应置1,保证场效应管截止,P3.x引脚的信息由输入缓 冲器BUF3的输出获得。
1.5 并行I/O端口
※ 有4个8位并行I/O口,共32条端线: P0、P1、P2和P3口。 每一个I/O口都能用作输入或输出。
※ 用作输入时,均须先写入“1”; 用作输出时,P0口应外接上拉电阻。
※ P0口的负载能力为8个LSTTL门电路; P1~P3口的负载能力为4个LSTTL门电路。
※ 在并行扩展外存储器或I/O口情况下, P0口用于低8位地址总线和数据总线(分时传送) P2口用于高8位地址总线, P3口常用于第二功能, 用户能使用的I/O口只有P1口和未用作第二功能 的部分P3口端线。
当P3口实现第一功能通用输入时,也可以执行“读锁 存器”操作,此时Q端信息经过缓冲器BUF1进入内部总线。
3.P3口的特点 P3口内部有上拉电阻,不存在高阻抗输入状态,为准双向口。 P3口作为第二功能的输出/输入,或第一功能通用输入,均须
将相应位的锁存器置1。实际应用中,由于复位后P3口锁 存器自动置1,满足第二功能条件,所以不需要任何设置 工作,就可以进入第二功能操作。 当某位不作为第二功能使用时,可作为第一功能通用I/O使用。 引脚输入部分有两个缓冲器,第二功能的输入信号取自缓冲 器BUF3的输出端,第一功能的输入信号取自缓冲器BUF2的 输出端。 P3口的第二功能定义(表2-1),读者应熟记。

单片机实用技术讲座(5)——第三讲 实验设备介绍

单片机实用技术讲座(5)——第三讲  实验设备介绍
V6. 2、 V6 0 0 .1
v ' 2、 6 l 6 l v 4版本或更高) 支持汇编 、 , c语言以及两种语言
混 合调 试 用 户程 序 :

可 以仿真标 准 5 1内核 的 单 片机 ,如 A ME T L公 司的 支持串 口仿真 , 用户可以使用串E 中断 ; l 完全仿真 5 单 片机的 P 、 2E , O、 21 1 0 P l P P 3可 作为 总 4 .使用 L G一3 2仿真 器需 注意的一些 问题 L G一3 2仿真器上有一 个 8路拨码开关 .默认的设置 位置

V 0 V . 2的设置与 v 4相同) 6 1、61 61 首先依 照 卜 ・ 讲介绍的 步骤建立一个工程文件 , 建立完毕后 , 选择菜单 Po c( r et工程) j

> O t nf a e Sr l 0 ( pi o Tr t i u t 0 r g e a r 目标 属 性 选 择 ) 如 图 2所 、
是 : — ON、 I 2一 OF 3一 OF 4一 OF 5一 OF 6一 OF F、 F、 F、 F、 F、
8 C 18 C 28 C 8 9 5 .9 5 ,9 5 和华邦公司的 W7 E 17 E 2等 ; 8 5 、8 5


线或普通 1 O使用 ; / 可 以仿真 8 C 2 8 C 8 9 5 、9 5 单片机 的 T 定 时器 ; g 1 3 c m ・ a t fn @ 6 _ a , o
使 用该端 口。
2L 一 2 . G 3 K仿 真 器 的 连 接
L G一3 K仿 真器 2
上一讲 主要向读者介绍 了 K i 5 n o s e 1Widw 集成开发环境 l  ̄ Io t s n和单 片机仿真调试 的基本概念 。 家知道 , V i 大 要使一个应

单片机 第3讲

单片机 第3讲

寄存器中存放的是操作数的地址
(1)访问内部RAM低128个单元,其通用形式为 @Ri
只能采用R0或R1作为间址寄存器。例如:
MOV A,@Ri ;i=0或1
(2)对片外数据存储器的64K字节的间接寻址, 例如: MOVX A,@DPTR
(3)片外数据存储器的低256字节
例如:MOVX
(4)堆栈区
A,@Ri
CPU 对 各 种 功 能部件的控制采用 特殊功能寄存器集 中控制方式,共21 个。 有 的 SFR 可 进 行位寻址,其字节 地址的末位是0H或 8H。
单片机的引脚
32根输入输出线 6根控制线 2根电源线
MCS-51的引脚 40只引脚双列直 插封装(DIP)
输入输出端口
1、P0口 第一种用法:作为地址/数据线使用 第二种用法:作为普通的I/O口来输入 输出数据(此时,需要外接上拉电 阻)。
Rn:工作寄存器中的寄存器Rn、R1…R7之一,
Ri:工作寄存器中的寄存器R0或R1 #data:8位立即数 #data16:16位立即数 direct:片内RAM或SFR的地址(8位)
@:间接寻址寄存器 Bit:片内RAM或SFR的位地址 addr11:11位目的地址 addr16:16位目的地址
MOV
2.直接寻址方式
A,#40H
指令直接给出操作数地址:
MOV 寻址范围: A,40H
(1) 内部RAM的低128个单元
(2) 特殊功能寄存器。例如:
MOV
A,80H 与
MOV
A,P0是等价的。
3.寄存器寻址方式:操作数在寄存器中 MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A 4. 寄存器间接寻址方式

单片机硬件、软件及其应用讲座(3)第三讲PIC168F873硬件系统(上)

单片机硬件、软件及其应用讲座(3)第三讲PIC168F873硬件系统(上)

单片机硬件、软件及其应用讲座(3)第三讲PIC168F873硬件
系统(上)
李学海
【期刊名称】《电子世界》
【年(卷),期】2000(000)003
【摘要】@@ PIC16F873型单片机是PIC中级单片机中很有特色的一款,其指令字节为14比特.它具有PIC系列单片机的全部优点,而且片内还带有128×8的EERROM(也叫E2PROM)数据存储器,其程序存储器也与众不同,采用快闪存储器.快闪存储器可以实现在电路板上快速擦除和写入,最适合于制作仿真板.借助于专为PIC16F873制作的仿真板,读者在学习程序编写和调试的过程中,可以方便地烧写程序和修改程序.读者在掌握了PIC16F873之后,如果想进一步学习PIC系列其它型号的单片机,将会收到触类旁通的功效.
【总页数】2页(P28-29)
【作者】李学海
【作者单位】
【正文语种】中文
【相关文献】
1.单片机硬件、软件及其应用讲座(14)第八讲输入/输出端口(上) [J], 李学海
2.单片机硬件、软件及其应用讲座(16)第九讲定时器/计数器(上) [J], 李学海
3.单片机硬件、软件及其应用讲座(4)第三讲 PIC16F873硬件系统(下) [J], 李学海
4.单片机硬件、软件及其应用讲座(10)第六讲软件集成开发环境MPLAB(上) [J], 李学海;王国联
5.单片机硬件、软件及其应用讲座(12) 第七讲 MPLAB-ICD在线调试工具套件及其应用(上) [J], 李学海;张秀芳;王国联;张先迅
因版权原因,仅展示原文概要,查看原文内容请购买。

(单片机完整课件PPT)第三章

(单片机完整课件PPT)第三章

寻址范围包括:
(1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位
可寻址位在指令中有如下4种的表示方法:
a. 直接使用位地址。例如PSW.5的位地址为0D5H。
b. 位名称的表示方法。例如:PSW.5是 F0 标志位,可使 用F0表示该位。 c.单元地址加位数的表示方法。例如 :(0D0H).5。 d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。
课堂练习:
指出下列指令中划线的操作数的寻址方式: Mov r0,#60h Mov a,30h Mov a, @r0 Movc a, @a+dptr Cjne a,#00h,one Cpl c Mov c,30h
如: MOV
A,Rn
;(Rn)→A,n=0~7
表示把寄存器Rn的内容传送给累加器A
寻址范围:ACC,B,DPTR,PSW,R0~R7,C
三、存储器寻址 寻址空间:64K 外RAM、64K ROM、128B 内RAM
1.直接寻址方式
操作数直接以单元地址的形式给出: MOV A,40H 寻址范围:内部RAM的256个单元 2.寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 如: MOV A,@Ri ;i=0或1
单片机原理与应用技术
厦门理工学院电子与电气工程系 陈志英
第3章 单片机汇编语言编程技术
机器语言:是计算机可以识别和直接执行的语言,它是由一 组二进制代码组成。 汇编语言:是用助记符代替机器语言的操作码,用16进制 数代替二进制代码。 高级语言:是采用类似自然语言并与具体计算机类型基本无

单片机教程 3第三次课2

单片机教程 3第三次课2

二、单片机的复位电路
复位电路
{
内部复位电路 外部复位电路
{
(1)上电自动复位 ) (2)按键手动复位 )
{
脉冲复位 电平复位

+5V
+5V
+5V RESET
RESET
vcc
22μF
vcc
80C51
300 Ω 22μF
80C51
RST/VPD
C2 22μF R2 10K
C1 22μF
vcc
80C51
RST/VPD
第五节 复位及复位电路
一、 单片机复位 复位是单片机的初始化操作, 复位是单片机的初始化操作,使单片机处于一个固定的 初始状态,并从此状态开始运行。 初始状态,并从此状态开始运行。 在运行中,当单片机的程序受外界因素干扰陷入死循环 在运行中, 或跑飞时,为摆脱困境,可将单片机复位,重新启动。 或跑飞时,为摆脱困境,可将单片机复位,重新启动。 MCS-51单片机的 单片机的RST引脚为复位端,该引脚保持两个 引脚为复位端, 单片机的 引脚为复位端 机器周期以上的高电平便可以实现单片机复位。 机器周期以上的高电平便可以实现单片机复位。
RST/VPD 1k VSS
1k VSS
R1 1k VSS
上电复位
按键电平复位
按键脉冲复位
说明
复位完成后,如果RST端继续保持高电平,则单片机一直 端继续保持高电平, ★ 复位完成后,如果 端继续保持高电平 处于复位状态,只有 端恢复低电平后, 处于复位状态,只有RST端恢复低电平后,单片机才能进入 端恢复低电平后 其他工作状态。 其他工作状态。 复位电路虽然简单,但是其作用非常重要。 ★ 复位电路虽然简单,但是其作用非常重要。一个单片机系统 能否正常工作,首先要检查其是否能复位成功。 能否正常工作,首先要检查其是否能复位成功。

单片机入门教程(第三课)

单片机入门教程(第三课)

第三课C语言的基本结构C语言有3种基本结构:顺序结构、选择结构、循环结构1、顺序结构是一种最基本、最简单的编程结构。

在这种结构中,程序按由低地址到高地址顺序地执行指令代码。

如:/*************************************************创新中心shunxu.c顺序结构程序*************************************************/#include <reg51.h>void Delay(unsigned int time){unsigned int i;for( i=0;i< time;i++){;}}sbit P0_0= P0^0;sbit P0_1= P0^1;sbit P0_2= P0^2;sbit P0_3= P0^3;sbit P0_4= P0^4;sbit P0_5= P0^5;sbit P0_6= P0^6;sbit P0_7= P0^7;void main(void){while(1){P0_0=0;Delay(50000);P0_1=0;Delay(50000);P0_2=0;Delay(50000);P0_3=0;Delay(50000);P0_4=0;Delay(50000);P0_5=0;Delay(50000);P0_6=0;Delay(50000);P0_7=0;Delay(50000);P0_0=1;Delay(50000);P0_1=1;Delay(50000);P0_2=1;Delay(50000);P0_3=1;Delay(50000);P0_4=1;Delay(50000);P0_5=1;Delay(50000);P0_6=1;Delay(50000);P0_7=1;Delay(50000);}}上面的程序在Keil 中编译后仿真,如下图所示:点击单步仿真或F10键,我们会看到程序黄色箭头的指引按顺序从上到下一条一条地执行下来的,旁边的IO口指示窗口亦能即时地反应程序执行的结果。

单片机指令系统-第3讲寻址方式

单片机指令系统-第3讲寻址方式

单片机指令系统-第3讲寻址方式单片机指令系统第 3 讲寻址方式在单片机的世界里,指令系统就如同它的语言规则,而寻址方式则是这套规则中至关重要的一部分。

简单来说,寻址方式决定了单片机如何找到操作数,也就是数据在存储器中的位置。

就好像我们在图书馆找一本书,需要知道它在哪个书架、哪一排,这就是“寻址”。

在单片机中,常见的寻址方式有以下几种:1、立即寻址立即寻址是最简单直接的一种方式。

在这种寻址方式中,操作数直接包含在指令中。

比如说,指令“MOV A, 50H”,这里的“50H”就是操作数,它直接跟在指令后面,单片机一看就知道要把 50H 这个值送到累加器 A 中。

这种方式的优点是指令执行速度快,因为操作数就在指令中,不需要再去别的地方找。

但缺点也很明显,就是能表示的操作数范围有限,通常只能是 8 位或 16 位的数值。

2、直接寻址直接寻址就稍微复杂一点了。

在这种方式下,操作数的地址直接出现在指令中。

例如,指令“MOV A, 30H”,这里的 30H 是操作数所在的地址,单片机通过这个地址就能找到存储在 30H 单元中的数据,并把它送到累加器 A 中。

直接寻址可以访问片内 RAM 的 00H 7FH 单元以及特殊功能寄存器(SFR)。

但要注意的是,对于 SFR,只能使用直接寻址方式进行访问。

3、寄存器寻址寄存器寻址就是操作数在寄存器中。

比如指令“MOV A, R0”,就是把寄存器 R0 中的内容送到累加器 A 中。

这种方式的优点是指令短,执行速度快,因为寄存器的访问速度通常比内存快得多。

在 8051 单片机中,寄存器寻址可以使用工作寄存器 R0 R7 以及部分特殊功能寄存器。

4、寄存器间接寻址寄存器间接寻址与寄存器寻址有点类似,但操作数的地址在寄存器中。

比如指令“MOV A, @R0”,这里的 R0 中存放的不是操作数,而是操作数的地址,单片机先从 R0 中取出地址,再根据这个地址找到操作数并送到累加器 A 中。

AVR单片机位操作

AVR单片机位操作

向左移位就是在低位上补0,向右移位就是在高位上补0。右移时可以保持结果 的符号位,也就是右移时。如果最高位为1,是符号位,则补1而不是补0。
例如: 当a=01110010 时 若b=a<<2; 结果为 b=11001000 若b=a>>2; 结果为 b=00011100 当a=11110010 时 若b=a<<2; 结果为 b=11001011 若b=a>>2; 结果为 b=11011100
4、按位进行操作
? 举例二:将 PB0、PB1定义为输出,且 PB0输 出低电平, PB1均为高电平
? DDRB|=BIT(0)|BIT(1); // 定义 PB0、PB1为输 出
? PORTB|=BIT(0)|BIT(1);// PB0 、PB1 输出高电 平
4、按位进行操作
? 举例三:将 PB0数据寄存器的数值翻转,即如 果是 1时变成 0,如果是 0时变成1
? 在单片机中,常用于某一位的置位。
例:我们将 PB3和PB0口置为高电平。
? 00001001
0X09
PB3 PB0 PORTB |=0X09 (等价于PORB=PORTB|0X09)
^ 位逻辑异或
? ^ 运算的规则是当两个位相同时,结果为 0,否 则为1; 此逻辑符常用于比较是否相同。
~ 取补(取反)
0XEF
PC4
PORTC &=0xEF ( 等价于PORTC=PORTC&0xEF)
或PORTC&=0b11101111
| 位逻辑或
? | 运算的规则是当两个位都为 0时,结果为0, 否则为 1; (小提示,你可以理解为加号,只有假的加假 的等于假,即 0加0等于0,其余情况,只要有 1 个是真的,结果都为真)

第三讲 AVR位操作

第三讲 AVR位操作

4、按位进行操作
举例五:将PB2、PB3定义为输入,不带上拉 电阻 DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3 为输入 PORTB&=~(BIT(2)|BIT(3)); // 将 PORT 置0, 没有上拉电阻
4、按位进行操作
举例六:将PB2、PB3定义为输入,带上拉电阻。即 没有引用这些引脚时,缺省值为高电平 SFIOR&=~BIT(PUD); // SFIOR寄存器的上拉电阻控 制位PUD置0,在整个代码中,这句话可以不出现,或 仅出现一次即可。因为它是一个控制全部上拉电阻的 控制位。 DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入 PORTB|=BIT(2)|BIT(3); // 将 PORT 置1,满足上拉电 阻的另一个条件
& 位逻辑与运算
& 运算的规则是当两个位都为1时,结果为1, 否则为0;(小提示:你可以在心中默念乘法来 代替它,真与真,就是1乘以1,真与假,就是1 乘以0,假与假,就是0乘以0) 在单片机中,常用于某一位清0,其他位不变 例:将PC4口清零,我们写出二进制数 11101111 0XEF
PC4
PORTC &=0xEF (等价于PORTC=PORTC&0xEF) 或PORTC&=0b11101111
读取PC2口的数据
假设 PC口接了若干设备,当前状态是 11110010,而我们现在要读取第3位即PC2, 则 1111 0110 PA2口的当前值 0000 0 100
求与后,最终变成 0000 0000
通过(1<<PA2)得出的值 那么if ((PINC&(1<<PC2))==0) 实际上就读出了 PC2的值

单片机实践第三讲80129-PPT课件

单片机实践第三讲80129-PPT课件
10
第三讲 MCS-51键盘与显示
第一部分 单片机键盘接口技术
编码键盘: 硬件方式产生编码
非编码键盘:软件方式产生编码
非编码键盘:结构简单、成本低廉 键按行列构成矩阵,每一个交叉点对应一个键,实际是一个 机械开关。非编码键盘的接口技术的主要内容是如何确定被 按键的行列位置。
1
行列式(矩阵式)键盘接口
用于按键数目较多的场合,由行线和列线组成, 按键位于行、列的交叉点上。
6
7
为使LED显示不同的符号或数字,要为LED提供段码
(或称字型码)。 提供给LED显示器的段码(字型码)正好是一个字 节(8段)。各段与字节中各位对应关系如下:
按上述格式,8段LED的段码如表所示。
8
表1
显示字符 共阴极 段码 3FH 0
LED段码(8段)
共阳极 段码 C0H 显示字符 共阴极 段码 39H 共阳极 段码 C6H c
扫描法
3
识别键盘有无键被按下的方法,分两步进行: 第1步:识别键盘有无键按下; 第2步:如有键被按下,识别出具体的按键。 把所有列线一一置0,检查各行线电平是否有变化, 如有变化,说明有键按下,如无变化,则无键按下。 上述方法称为扫描法,即先把某一列置低电平, 其余各列为高电平,检查各行线电平的变化,如果某 行线电平为低,可确定此行列交叉点处的按键被按 下。
1 2
3 4 5 6 7 8
06H 5BH
4FH 66H 6DH 7DH 07H 7FH
F9H A4H
B0H 99H 92H 82H F8H 80H
d E
F P U T y1H 6EH 76H
A1H 86H
8EH 8CH C1H CEH 91H 89H

第三讲51单片机存储器及寻址方式

第三讲51单片机存储器及寻址方式

TMOD 定时器方式寄存器
部分专用寄存器介绍
1) 程序状态字寄存器PSW C AC F0 RS1 RS0 OV F1 P
C:为进位标志,AC:半进位标志,F0 、 F1为用户标志, RS1和RS0为当前工作寄存器组的选择位,OV 是溢出标志 位, P是奇偶标志位。
2)ACC:累加器 3)DPTR:地址寄存器
B ACC PSW TH2* TL2* RCAP2H* RCAP2L* T2MOD* T2CON* IP P3 专 IE 用 WDTRST 寄 P2 存 SBUF 器 SCON 区 P1 SFR TH1 TH0 TL1 TL0 TMOD TCON PCON DP1H DP1L DPH DPL SP P0
工作寄存器区: 00H~1FH
30H 2FH
用户RAM区

位寻址区:
20H~2FH
20H 1FH 18H 17H
位寻址区 (位地址00H~7FH)
第3组工作寄存器区R0~R7

用户RAM区: 30H~7FH
第2组工作寄存器区R0~R7 10H 0FH 第1组工作寄存器区R0~R7 08H 07H 第0组工作寄存器区R0~R7 00H
二、数据存储器
工作寄存器区

地址:00H~1FH,32B;

4组:每组为8个8位寄存器
R0~R7;

由PSW中的RS1,RS0选择 当前工作寄存器。
RS1RS0与工作寄存器的关系
工作寄存器选择

0 1 2
RS1 RS0 R0
0 0 1 0 1 0 00H 08H 10H
R1
01H 09H 11H
假定R1寄存器的内容是 60H,则其功能是以 R1寄存 器的内容60H为地址,将60H地址单元的内容与累加器A 中的数相“与”,其结果仍存放在A中。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机第三讲
2012年5月25日变量中的内容:○1是一个数据——变量
○2是存储器的单元的地址号——指针变量
C51的逻辑运算
a 1 0 1 0 1 0 1 0
b 1 1 0 0 1 1 0 1
a&b 1 0 0 0 1 0 0 0
a+b 1 1 1 0 1 1 1 1
a^b 0 1 1 0 0 1 1 1
~a 0 1 0 1 0 1 0 1
a<<1 0 1 0 1 0 1 0 0(相当于原数乘以2)
a>>1 0 0 0 1 0 1 0 1
○1a与b进行与运算:a&b
有0出0,全1出1
○2a与b进行或运算:a+b
有1出1,全0出0
○3a与b异或运算:a^b
相同出0,不同出1
○4取反:~a
2.C语言的来年刚刚除法运算
/:取商舍余数
%:取余数舍商(不能用于float)
例:char a,b;
a=7,b=2;
○1a/b=3;
○2a%b=1;
t=((float)a)/((float)b);
=3.5
3.C语言中的1
4.例:流水灯(LD1~LD8)工程名:c_bit #include <reg51.h>
unsigned int m;
unsigned char i;
void main()
{
while(1)
{
m++;
if(m ==50000)
{
m=0;
i++;
if(i==8)
{
i=0;
}
P1=~(1<<i)
}
}
}
/*
P1=~(1<<i); 00000001 00000001 i=1; 11111101
如果i=2 11111011
*/
例:只有1个灯闪烁#include <reg51.h> unsigned int m; unsigned char i; void main()
{
while(1)
{
m++;
if(m == 50000)
{
m=0;
P1^=(1<<2);
}
}
}
例:2个灯亮
#include <reg51.h> unsigned int m; unsigned char i; void main()
{
while(1)
{
m++;
if(m == 50000)
{
i++;
m=0;
if(i == 8)
{
i=0;
}
P1^=~(3<<i);
}
}
}
例:用按钮控制灯
#include <reg51.h>
sbit k1=P2^4;//按键
sbit k2=P2^7;
sbit LD1=P1^1;
sbit LD2=P1^2;
char i;//按钮所按的次数void delay(unsigned int x) {
while(x--);
}
void key1()
{
if(k1==0)//按钮按下第一次发现按钮按下{
delay(2000);
if(k1==0) //再次确认按下键
{
LD1=!LD1;//亮灭
while(k1==0);//一直按下不执行
}
}
}
void key2()
{
if(k2==0)//按钮按下第一次发现按钮按下{
delay(2000);
if(k2==0) //再次确认按下键
{
LD2=!LD2;
while(k2==0);//一直按下不执行
}
}
}
void main()
{
while(1)
{
key1();
key2();
}
}
指针概念
#include <reg51.h>
sbit k1=P2^7;
sbit LD1=P1^0;
unsigned char x;
void key(unsigned char *p)
unsigned char y;
y=*p;
y++;
*p=y;
}
void main()
{
unsigned char u;
u=56;
while(1)
{
key(&u);
}
}
例:用按钮控制灯(比上面的例子简单些)#include <reg51.h>
sbit k1=P2^7;
sbit LD1=P1^0;
unsigned char x;
void key()
{
static unsigned char k;
static unsigned char f;
if(k1 == 0)//如果
{
if(k == 0)
{
f++;
if(f >= 100)
{
if(k1 == 0)
{
LD1=!LD1;
//...本按钮其他事情
k=1;
}
}
}
}
else//否则
{
k=0;
f=0;
}
}
void main()
{
while(1)
{
key();
//...其他事情
}
}
例:前7个灯是流水灯,第8个灯受控于按钮#include <reg51.h>
sbit k1=P2^4;
sbit LD1=P1^0;
unsigned char i=1;
void key( )
{
static unsigned char k;//保留上一次值静态局部变量static unsigned char j;
if(k1==0)
{
if(k==0)
{
j++;
if(j>=100)//延时
{
if(k1==0)
{
LD1=!LD1;
k=1;
}
}
}
}
else
{
k=0;
j=0;
}
void main()
{
unsigned char k;
unsigned int n;
while(1)
{
n++;
if(n==60000)
{
i++;
if(i==7)
{
i=0;
}
k=P1;//原来是灭的
if((k&0x01)==1)//最后一位是灭的
{
P1=(0x80>>i)|0x01;
else
{
P1=0x80>>i;//第一位本来就是灭的
}
}
key();
}
}
作业:如果按钮按了0次的话,不起作用。

相关文档
最新文档