导航:首页 > 操作系统 > 单片机CDH

单片机CDH

发布时间:2022-08-23 08:13:21

A. 用单片机做交通灯,这么做

基于单片机的交通灯设计
时间:2010-12-08 21:43:12 来源: 作者:
一、 系统功能要求:
1. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。
时间方向 控制要求
白天 东西 绿灯 黄灯 红灯 南北 红灯 绿灯 黄灯
晚上 东西 黄灯 南北 红灯
2.总体设计方案现在流行的一种设计为两主干线相交的十字路。本设计采用一主干道(南北方向),一从干道(东西方向)的路口,即主干道的通行时间为从干道的2倍。在正常情况下,两干道的交通灯按图1进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位LED上;另发挥部分为当出现紧急情况时,路口的交通灯全为红灯,紧急情况解除时,恢复到原来的状态。
二、 总体设计方案提示:
1.假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态。
2.东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态。
3.南北绿灯通车,东西红灯。过一段时间转状态。
4.南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。
三.硬件设计
电路原理图如下:

四、软件设计
1、 流程图

2、程序设计
ORG 0000H
MOV P0,#00H ;确保P0为低电位
lJMP MAIN0
ORG 0030H
MAIN0: MOV 30H,#08H
MOV R6,#00H
MOV R7,#00H
MOV DPTR,#TABLE ;取数码管的译码
MOV TMOD,#01H ;设计定时方式及时间
MOV TL0,#0CDH
MOV TH0,#0BH
SETB TR0
MOV IE,#00H
MAIN: MOV P1,#0F3H ;南北绿灯,东西红灯
MOV R6,#1EH ;红灯30s倒计时
MOV R7,#19H ;绿灯25s倒计时
MAIN1:CALL DELAY ;1S延时子程序
JB P0.1,REL1 ;判断是否有东西方向按钮按下
CJNE R7,#00H,MAIN1 ;判断绿灯25s是否倒计完
MOV P1,#0F5H ;南北黄灯,东西红灯
MAIN2:CALL DELAY
MOV R7,#00H ;红灯继续倒计时,黄灯闪烁,保持0s
CPL P1.1 ;黄灯闪烁
CJNE R6,#00H,MAIN2 ;判断红灯是否倒计时完
MOV P1,#0DEH ;南北红灯,东西绿灯
MOV R7,#1EH
MOV R6,#19H
MAIN3:CALL DELAY
JB P0.0,REL2
CJNE R6,#00H,MAIN3
MOV P1,#0EEH
MAIN4:CALL DELAY
MOV R6,#00H
CPL P1.4
CJNE R7,#00H,MAIN4
JMP MAIN
REL1:MOV P1,#0F5H ;东西方向按钮按下,南北方向强制由绿灯变成黄灯警告
MOV R6,#05H
MOV R7,#00H
JMP MAIN2
REL2:MOV P1,#0EEH ;南北方向按钮按下,东西方向强制由绿灯变成黄灯警告
MOV R7,#05H
MOV R6,#00H
JMP MAIN4
;1s延时子程序
DELAY:MOV A,R6 ;进行南北方向倒计时时间的十进制调整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR ;找寻相应的数码管代码
MOV P2,#01H
MOV P3,A ;输出个位
MOV R4,#4 ;降低动态显示频率
LOOP2:MOV R3,#125
LOOP3:DJNZ R3,LOOP3
DJNZ R4,LOOP2
MOV A,B
MOVC A,@A+DPTR
MOV P2,#02H ;输出十位
MOV P3,A
MOV R4,#4
LOOP4:MOV R3,#125
LOOP5:DJNZ R3,LOOP5
DJNZ R4,LOOP4
MOV A,R7 ;进行东西方向倒计时时间的十进制调整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P2,#04H
MOV P3,A
MOV R4,#4
LOOP6:MOV R3,#125
LOOP7:DJNZ R3,LOOP7
DJNZ R4,LOOP6
MOV A,B
MOVC A,@A+DPTR
MOV P2,#08H
MOV P3,A
MOV R4,#4
LOOP8:MOV R3,#125
LOOP9:DJNZ R3,LOOP9
DJNZ R4,LOOP8
JBC TF0,LOOP ;判断是否计满125ms
AJMP DELAY
LOOP:MOV TL0,#0CDH ;计满125ms重新给定时器赋值
MOV TH0,#0BH
MOV A,30H
DEC A
MOV 30H,A
JNZ DELAY ;判断是否计满8次125ms,即1s
DEC R6 ;计满1s,东西倒计时减1,南北倒计时减1
DEC R7
MOV 30H,#08H ;重新1s次数,重新计时
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;相应数值的数码管代码
DB 92H,82H,0F8H,80H,90H
END

B. 单片机里面CPU读写存储器的步骤过程

1)存储器的读操作。例如,若要将存储器40H中的内容50H读出,其过程如下:

①CPU将地址码40H送到地址总线上,经存储器地址译码器选通地址为40H的存储单元:
②CPU发出“渎”信号,存储器读/写控制开关将数据传输方向拨向“读”;

③存储器将地址为40H的存储单元中的内容50H送到数据总线上;

④CPU将数据总线上的数据50H读人指定的某一寄存器。
对存储单元的读操作,不会破坏其原来的内容。相当于复制。

2)存储器的写操作。例如,若要将数据ABH写入存储器地址为CDH的存储单元中,其过程如下: 内容来自单片机之家www.dpj100.com
①CPU将地址码CDH送到地址总线上,经存储器地址译码器选通地址为CDH的存储单元;
②CPU将数据ABH送到数据总线上;

③CPU发出“写”信号,存储器读/写控制开关将数据传送方向拨向“写”;
④存储器将数据总线上的数据ABH送人已被选中的地址为CDH的存储单元中。

C. 写出10和51单片机的专业寄存器名字。

不知道什么是10单片机,也没听过专业寄存器

下面是52的特殊功能寄存器的地址、符号、和初始值
FFH
F0H B 00000000
E0H ACC 00000000
D0H PSW 00000000
CDH TH2 00000000
CCH TL2 00000000
CBH RCAP2H 00000000
CAH RCAP2L 00000000
C9H T2MOD xxxxxx00
C8H T2CON 00000000
B8H IP xx000000
B0H P3 11111111
A8H IE 0x000000
A0H P2 11111111
99H SBUF 不定
98H SCON 00000000
90H P1 11111111
8DH TH1 00000000
8CH TH0 00000000
8BH TL1 00000000
8AH TL0 00000000
89H TMOD 00000000
88H TCON 00000000
87H PCON 0xxx0000
83H DPH 00000000
82H DPL 00000000
81H SP 00000111
80H P0 11111111

D. 单片机标识符的规则

1.bit和sbit都是C51扩展的变量类型。 bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,意义有点像Windows下VC中的BOOL。 sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。一旦用了sbi xxx = REGE^6这样的定义,这个sbit量就确定地址了。sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。
2.bit位标量 bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。
3.sfr特殊功能寄存器 sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。 sfr P1 = 0x90; //定义P1 I/O 口,其地址90H sfr 关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1 口可以用P1 为名,这样程序会变的好读好多.等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表. sfr 是定义8 位的特殊功能寄存器而sfr16 则是用来定义16 位特殊功能寄存器, 如8052 的T2 定时器,可以定义为: sfr16 T2 = 0xCC; //这里定义8052 定时器2,地址为T2L=CCH,T2H=CDH

E. 单片机存储器的程序存储器

MCS-51中,程序存储器通过16位程序计数器(PC)寻址,具有64KB寻址能力,也即可以在64KB的地址空间任意寻址。其中,具有4KB片内程序存储器空间,地址为000H-0FFFH(注:8031无片内程序存储器);片外程序存储器空间最大可扩展到64KB,地址为0000H-FFFFH,片内、外统一编址。
1、程序存储器片内与片外地址
由于片内、外统一编址,所以片内4KB存储空间地址000H-0FFFH与片外存储器地址000H-0FFFH发生冲突。但是,CPU是访问片内存储器还是访问片外存储器,可由引脚上所接的电平来确定。
1)当EA引脚接高电平时,若程序计数器(PC)值超出片内存储空间,则自动转向片外程序存储器空间执行程序;
2)当EA引脚接低电平时,单片机只能执行片外程序存储器的程序。
另外,因为8031没有片内程序存储器,所以就将EA引脚固定接低电平,通过外部扩展程序存储器来存放程序;而对其它MCS-51,若没有片外程序存储器,那应将引脚固定接高电平。通过EA引脚所接电平不同,解决了程序存储器中片内、片外地址冲突问题。
2、程序存储器中的特殊单元
MCS-51程序存储器中,有6个存储单元具有特殊用途。
0000H单元为系统启动地址。MCS-51单片机启动复位后,程序计数器(PC)的内容为0000H,所以系统将从0000H单元取指令,并开始执行程序。程序设计时一般在该地址存放一条绝对跳转指令,转入主程序的入口地址。
另外0003H一002AH日被均匀地分成5段,用于5个中断服务程序的入口。
其中0003H、000BH、0013H、O01BH、0023H为5个中断源的中断服务程序的入口地址。
中断源的中断服务程序的入口地址,即当中断产生相应的中断服务程序的起始地址被装入程序计数器(PC),系统将从该地址取指令,并执行程序 。 8051有256个单元的内片数据存储器,其中00H-7FH为片内随机存储器RAM,也叫低128B;80H-FFH为特殊功能寄存器,也叫高128B。低128B又分为工作寄存器区、位寻址区、用户RAM区。
1.工作寄存器区(00H-1FH)
在00H-1FH共32个单元,被均匀地分为四组工作寄存器堆:RB0、RB1、RB2、RB3,每组寄存器堆包含8个工作寄存器,均以R0-R7来命名,这些寄存器被称为通用寄存器。工作寄存器用于临时存放8位信息。在使用时,由程序状态字寄存器中的RS0、RS1来选择工作寄存器堆。
2.位寻址区(20H-2FH)
片内数据存储器的20H-2FH存储区为位寻址区,既可作为一般单元按字节寻址,也可按位进行寻址。位寻址区有16个字节,位地址为00H-7FH。
3.用户RAM区(30H-7FH)
用户RAM区主要用作数据缓冲区和堆栈。这个存储区只能按字节寻址,用作存放数据及作为堆栈区。通常堆栈区被设置在这块存储区,由堆栈寄存器SP指定,CPU复位时SP=07H,使得堆栈实际上是从08H开始的,但08H-1FH属于工作寄存器区 。 MCS-51单片机的特殊功能寄存器 符号 地址 功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 TH2* CDH 定时器/计数器2(高8位) TL2* CCH 定时器/计数器2(低8位) RLDH* CBH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器高八位 RLDL* CAH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器低八位 T2CON* C8H T2定时器/计数器控制寄存器 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 SBUF 99H 串行口锁存器 SCON 98H 串行口控制寄存器 P1 90H P1口锁存器 TH1 8DH 定时器/计数器1(高8位) TH0 8CH 定时器/计数器0(高8位) TL1 8BH 定时器/计数器1(低8位) TL0 8AH 定时器/计数器0(低8位) TMOD 89H T0、T1定时器/计数器方式控制寄存器 TCON 88H T0、T1定时器/计数器控制寄存器 DPH 83H 数据地址指针(高8位) DPL 82H 数据地址指针(低8位) SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H 电源控制寄存器

F. 初学单片机,书中有几句句话不懂,请指教 读取程序存储器常数,表格中的数据时,通常采用"MOVC

常数存放的区域不同于变量,变量是放在随机存储器(运行内存)中的,这个用MOV,常数是在只读存储器里面,这个用MOVC。因为这两个存储器地址名字基本是一样的,比如说,他们都有02CDH这个地址,单片机想读02CDH这个地址的数请问单片机怎么才能知道,你作为程序作者,是想让他读随机区?还是只读区?这也就是有MOV、MOVC的原因。

G. 单片机小的编程,编了下不知道对不对!望大家指正谢谢!

修改了错误,增加了原始数据,如下所示。
ORG 0000H
SJMP MAIN
ORG 0050H
MAIN:

;01H 23H 45H 67H 89H 0ABH 0CDH 0EFH
MOV 30H, #01H
MOV 31H, #23H
MOV 32H, #45H
MOV 33H, #67H
MOV 34H, #89H
MOV 35H, #0ABH
MOV 36H, #0CDH
MOV 37H, #0EFH

MOV R2, #8
MOV R0, #30H ;是30,不是20
MOV R1, #40H ;是40, 不是30
MOV DPTR, #ASCTB
LOOP:
MOV A, @R0
ANL A, #0F0H
SWAP A
ACALL TRANS
MOV A, @R0
ANL A, #0FH ;是0F,不是F0
ACALL TRANS
INC R0
DJNZ R2, LOOP
SJMP $

TRANS:
MOVC A, @A+DPTR
MOV @R1, A
INC R1
RET

ASCTB: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H

END

H. 单片机sfr和sbit有什么区别

我是一名单片机工程师,对于什么是sfr,下面的讲解你参考一下。

.

sfr全称为:specialfunctionregister(翻译为:特殊功能寄存器)

.

要想明白什么是sfr,需要先了解什么是寄存器

寄存器是RAM和ROM的统称。

.

如果你想学习更多单片机和程序的知识,可以看看我整理好的帖子

一天入门51单片机:网页链接

关于尾声

学单片机靠的是坚持,不能三天打鱼两天晒网,只要坚持就会看到希望。如果不坚持,一辈子(100年)都学不会,如果坚持,一个月后你就会感觉到单片机迷人的一面了。加油,祝你成功!

I. 单片机乘法指令

乘法指令当结果大于0FFH时,A就装不下了,所以“溢出”了,大于部分装入到B里面。

阅读全文

与单片机CDH相关的资料

热点内容
海南压缩机在哪里 浏览:487
电脑文件夹清晰的文件结构 浏览:837
如何把苹果手机的app转到安卓 浏览:303
java同步并发 浏览:249
fw压缩图片 浏览:256
淘宝申请源码靠谱吗 浏览:872
androidupdater 浏览:635
c2d游戏源码大全可复制版 浏览:771
电脑怎样重置网关命令 浏览:411
winftplinux 浏览:335
推特app界面如何设置成中文 浏览:452
太空工程师转子编程属性 浏览:32
windowscmd关机命令 浏览:342
云桌面只要服务器装一套软件 浏览:247
电脑右键按到什么导致文件夹全屏 浏览:454
我的世界如何制造服务器主城 浏览:365
linuxssh连不上 浏览:297
永宏plc用什么编程电缆 浏览:371
win激活命令行 浏览:886
新手学电脑编程语言 浏览:893