找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

6课:单片机并行口结构

查看数: 57687 | 评论数: 85 | 收藏 5
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-5-21 02:50

正文摘要:

  上两次我们做过两个实验,都是让P1.0这个管脚使灯亮,我们能设想:既然P1.0能让灯亮,那么其它的管脚可不能呢?看一下图1,它是8031单片机管脚的说明,在P1.0旁边有P1.1,P1.2….P1.7,它们是否都能让灯 ...

回复

ID:866313 发表于 2024-1-7 11:12
cp3_kuo 发表于 2017-9-1 16:12
文中提到的原理图在那里?

51hei.png (147.44 KB, 下载次数: 186)

51hei.png
ID:866313 发表于 2024-1-7 11:11
v115488 发表于 2016-12-7 22:21
试验四,用的电路图是那个?找不到电路图,看着好难理解。

下面这个是我自己根据文字描述猜测的硬件连接原理图,希望对你有所帮助

51hei.png (147.44 KB, 下载次数: 184)

51hei.png
ID:866313 发表于 2024-1-7 11:03
absflash 发表于 2015-12-21 09:13
研究的真细致,看到各种门就头疼

小时候脑袋被门挤了,导致现在看到门就头疼
ID:866313 发表于 2024-1-7 08:48
按键控制LED的亮灭
汇编程序:
  1. ; ====================按键控制LED====================
  2. ; 外设端口切换寄存器 2 的地址
  3. P_SW2   DATA    0BAH

  4. ; 端口模式配置寄存器的地址
  5. P1M0    DATA    092H
  6. P1M1    DATA    091H
  7. P3M0    DATA    0B2H
  8. P3M1    DATA    0B1H

  9.         ORG     0000H   ; 设置程序的起始地址为 0000H,即程序的入口点
  10.         LJMP    MAIN    ; 通过长跳转指令 (LJMP) 跳转到 MAIN 主程序的地址
  11.         ORG     0100H   ; 设置程序的重定位地址为 0100H,用于存放中断向量等信息

  12. ; 主程序:
  13. MAIN:
  14.     MOV SP, #5FH        ; 设置堆栈指针
  15.    
  16.     ORL P_SW2, #80H     ; 使能访问 XFR
  17.    
  18.     MOV P1M0, #00H      ; 清空 P1M0 寄存器
  19.     MOV P1M1, #00H      ; 清空 P1M1 寄存器
  20.     MOV P3M0, #00H      ; 清空 P3M0 寄存器
  21.     MOV P3M1, #00H      ; 清空 P3M1 寄存器
  22.    
  23.     MOV P1M0, #0FFH     ;设置 P1 为推挽输出模式。#0FFH 中的 0 不能省略
  24.     MOV P1M1, #00H
  25.     MOV P3M0, #00H      ;设置 P3.2、P3.3、P3.4、P3.5 为高阻输入模式。
  26.     MOV P3M1, #3CH
  27.    
  28.     MOV P1, #0FFH       ; 将 0xFF 赋值给 P1 寄存器,即将端口 P1 的所有引脚设为高电平,熄灭小灯
  29.    
  30.     LJMP LOOP           ; 跳转到循环体

  31. ; 循环体
  32. LOOP:
  33.     MOV A, P3   ; 将 P3 寄存器的值移动到累加器 A
  34.     MOV P1, A   ; 将累加器 A 的值移动到端口 P1,实现 P1 输出与 P3 寄存器相同的值
  35.     LJMP LOOP   ; 无条件跳转到循环体,实现持续循环

  36. END
  37. ; ================================================================
复制代码
硬件连接:


Proteus 8 Professional 仿真结果:
1. 4 个按键都没有按下

2. 按键 K1、K2、K3、K4 分别单独按下

3. 同时按下按键 K1、K2、K3、K4 中的两个


3. 同时按下按键 K1、K2、K3、K4 中的三个


3. 同时按下按键 K1、K2、K3、K4 中的四个




ID:866313 发表于 2024-1-6 19:35
烧烤时使用的铁签子来理解累加器 A下面这行代码我是这样理解的:P3 寄存器的内容好比烧烤食材,此时累加器 A 好比打荷时还没有穿上“衣服”的铁签子,这行代码执行过程不就和将烧烤食材串在铁签子上一样吗?
  1. MOV A, P3
复制代码
那么下面这行代码又该如何理解呢?

  1. MOV P1, A
复制代码
此时
累加器 A 好比烤制完成后的一串烤串P1 寄存器好比我这贪吃的嘴,这行代码执行过程对应过来就是撸串



ID:866313 发表于 2024-1-6 19:19
图 3 好像缺少了,我觉得可以使用烧烤的铁签来比作累加器 A
ID:866313 发表于 2024-1-6 19:14
阳春巴人 发表于 2018-6-12 15:31
作者写得很通俗易懂,受益匪浅。毕业八年之后,再又重新开始学习单片机,有种温故而新的感觉。

考古
我也是毕业后又倒回来浏览这个教程
ID:866313 发表于 2024-1-6 18:10
blink.a51 内容如下:
  1. ; 外设端口切换寄存器 2 的地址
  2. P_SW2   DATA    0BAH

  3. ; 端口模式配置寄存器的地址
  4. P1M0    DATA    092H
  5. P1M1    DATA    091H

  6.         ORG     0000H        ; 设置程序的起始地址为 0000H,即程序的入口点
  7.         LJMP    MAIN         ; 通过长跳转指令 (LJMP) 跳转到 MAIN 主程序的地址
  8.         ORG     0100H        ; 设置程序的重定位地址为 0100H,用于存放中断向量等信息

  9. ; 主程序:
  10. MAIN:
  11.     MOV SP, #5FH             ; 设置堆栈指针
  12.    
  13.     ORL P_SW2, #80H          ; 使能访问 XFR
  14.    
  15.     MOV P1M0, #00H           ; 清空 P1M0 寄存器
  16.     MOV P1M1, #00H           ; 清空 P1M1 寄存器
  17.    
  18.     MOV P1M0, #0FFH         ;设置 P1 为推挽输出模式。#0FFH 中的 0 不能省略
  19.     MOV P1M1, #00H
  20.    
  21.     LJMP LOOP                ; 跳转到循环体

  22. ; 循环体
  23. LOOP:
  24.     MOV P1, #0FFH            ; 将 0xFF 赋值给 P1 寄存器,即将端口 P1 的所有引脚设为高电平,熄灭小灯
  25.     LCALL DELAY_1S           ; 延时一段时间
  26.     MOV P1, #00H             ; 将 0 赋值给 P1 寄存器,即将端口 P1 的所有引脚设为低电平,点亮小灯
  27.     LCALL DELAY_1S           ; 延时一段时间
  28.     AJMP LOOP                ; 无条件跳转到循环体

  29. ; ====================延时1秒子程序====================
  30. DELAY_1S:         ; 延时子程序,12MHz 晶振延时 1.002035 秒
  31.     MOV R4, #10   ; 设置 R4 寄存器为 10,1 指令周期
  32.    
  33. L3:
  34.     MOV R2, #200  ; 设置 R2 寄存器为 200,1 指令周期
  35.    
  36. L1:
  37.     MOV R3, #249  ; 设置 R3 寄存器为 249,1 指令周期
  38.     L2:
  39.         DJNZ R3, L2     ; 2 指令周期
  40.    
  41.     DJNZ R2, L1          ; 2 指令周期
  42.     DJNZ R4, L3          ; 2 指令周期
  43.    
  44.     RET                      ; 2 指令周期
  45. ; 循环体延时时间: [(249*2+1+2)*200+1+2]*10*12/12000000=1.002032s
  46. ; 加上 LCALL 指令和第一条 MOV 指令以及最后一条 RET 指令算出来整个函数的时间为 1.002035s
  47. ; =====================================================

  48. END
复制代码

Proteus 8 Professional 仿真结果如下图:

ID:866313 发表于 2021-11-3 15:38
貌似缺少了几张图片
ID:889933 发表于 2021-3-11 15:58
是不是缺少图?后面没看懂
ID:866313 发表于 2020-12-29 16:13
PPT动态演示加深了对CPU读引脚和读锁存方式的理解,从前面的对位的操作到这节对字节的操作也让我对并行口的理解更加清楚了,感谢LZ
ID:743654 发表于 2020-5-25 14:25
涉世未深 发表于 2014-5-15 19:04
**** 作者被禁止或删除 内容自动屏蔽 ****

其实汇编比C语言简练,只是汇编不易于移植
ID:405397 发表于 2018-10-6 15:05
醍醐灌顶
ID:387093 发表于 2018-8-18 15:09
写入这程序后无法编译不知道是咋回事。
ID:381830 发表于 2018-8-14 16:42
大神能用c需要编程嘛?
ID:381830 发表于 2018-8-14 16:40
大神,能不能用c需要编程啊?
ID:124951 发表于 2018-7-7 14:12
讲解的很好,受益匪浅
ID:93625 发表于 2018-6-25 16:09
这个内容我觉得理解一下就行了。
ID:341410 发表于 2018-6-12 15:31
作者写得很通俗易懂,受益匪浅。毕业八年之后,再又重新开始学习单片机,有种温故而新的感觉。
ID:338224 发表于 2018-5-25 17:19
基础的沉淀对后期很重要,赞一个
ID:305511 发表于 2018-4-13 20:52
真的是非常好
ID:257340 发表于 2018-3-3 21:15
图片字体颜色看起来费劲
ID:276348 发表于 2018-1-16 20:23
这节讲的是输入输出接口。
ID:274910 发表于 2018-1-11 18:00
很给力!
ID:263340 发表于 2017-12-18 20:28
膜拜大佬分享~
ID:257900 发表于 2017-12-17 13:58
感谢楼主资源,刚好学到单片机,对我帮助很大
ID:258941 发表于 2017-12-8 10:28
感谢分享如此之详细
ID:257101 发表于 2017-12-4 11:42
不错,写得很好
ID:252697 发表于 2017-11-23 15:37
受益匪浅 好好学习,坚持再坚持!!
ID:235267 发表于 2017-10-28 11:42
很给力
ID:228809 发表于 2017-9-1 16:12
老湿,文中提到的原理图在那里?
ID:182522 发表于 2017-4-13 15:09
很棒  收获颇丰
ID:182522 发表于 2017-4-13 15:08
深刻 受益匪浅
ID:182522 发表于 2017-4-13 15:07
受益匪浅 深入浅出 受教了 谢谢
ID:188203 发表于 2017-4-12 11:23
太给力了!帅气帅气!
ID:171111 发表于 2017-3-17 23:08
很好 很详细 谢谢老师得教程!
ID:101315 发表于 2017-3-10 19:05
通俗易懂
ID:165038 发表于 2017-2-24 13:20
图2和图3呢?怎么没有图
ID:159575 发表于 2017-1-3 13:24
汇编好难啊
ID:151504 发表于 2016-12-12 18:04
p1并行口图上没有开关,是说的P2口吧?

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表