CPL 取反~ 🌟CPL取反,CLR清零
CLR 清零
SETB 置位为1
RL 左移一位
ANL 相与&
INC 加一
ORL 或
XRL 逻辑异或,异或的操作是:相同取0,相反取1
🌟
RL:左移一位
RLC :左移一位同时CY左移一位
CPL P1.3 对第三位取反
JBC 为1跳转
程序存储器只读不写!MOVC
XCHD 指的是低四位交换
SWAP 是高低四位自交换
程序转移指令:
无条件转移和有条件转移
JZ A=0的时候转移
DJNZ 减一不为0转移
判断位转移
JB bit
JNB bit
JBC bit
🌟
子程序返回RET和中断返回RETI
RET指令作为子程序的最后一条指令,按调用时保存的地址返回,
RETI作为中断程序的最后一条,除了按照中断保存的地址之外还要清除相应的中断寄存器
指令,关键点在于最后一条和谁是谁。
算数指令
INC DEC
寻址方式总结:
立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,基地址+变地址寻址
🌟 高128字节采用寄存器间接寻址方式!!!,特殊功能寄存器采用
直接寻址
所有加减都有近位位的计算
例子
MOV A,#36H ;0011 0110
MOV R0,#9FH ;1001 1111
ANL A,R0; A=0001 0110=16H
SETB C; C=1;
ADDC A,RO; 0001 0110 + 1 + 1001 1111=> A=B6H
JNZ REL 为两字节指令 从1308H->134AH 求相对偏移量REL
134AH=1308H+02H+REL =>REL=40H
目的地址=(PC)+2+REL
DA A才对 必须是单个操作符
DA感觉会考🌟
对低四位加0110调整,注意进位位CY=1,当高四位有进位的时候
CLR C ;C=0;
ADDC A,#60H;0010 0101 +0110 0000->1010 0110 =C6H,CY=1;
MOV 20H,@R0;(20H)=33H;
ADDC A,20H;A+33H+CY=>FAH;
MOV 33H,A;=>(33H)=FAH;
扩展RAM2010H的内容送扩展RAM2020H
ORG 0000H;
MOV DPTR #2010H;
MOVX A @DPTR;
MOV DPTR #2020H;
MOVX @DPTR A;
END
MOVC 采用基地址+变地址方法!
将程序存储器数据2010H送入累加器A中
ORG 2000H;
MOV DPTR ,#2000H;
MOV A ,#10H;
MOVC A ,@A+DPTR
列竖式运算:
ORG 0000H;
LJMP START;
ORG 1000H;
START:
CLR C;清零操作
MOV A,30H;
SUBB A,40H;
MOV 30H,A;
MOV A,31H;
SUBB A,41H;
MOV 31H,A; 存放结果先低位再高位
SJMP $;
END;
程序设计段
转换为ASCII
ORG 1000H
ADDR DATA 0040H;
ADDR2 EQU 60H;
MOV DPTR ,#ADDR1;
MOV R0,#ADDR2;
MOV @R0,#00H;
MOVX A,@DPTR;
MOV R7,A;
ANL A ,#0FH;
CLR C;
ADDC A,#30H;
MOV @R0,A;
INC R0;
分段函数
变量x作为补码形式存放进30H
ORG 1000H;
START:
MOV A,30H ;先将变量存入A中
JZ NEXT; 如果x=0;转移,NEXT作为标号
ANL A,#80H;通过判断最高位来判断正负
JZ ED; 如果x>0;转移
MOV A,#05H;否则不转移
ADD A,30H;
MOV 30H,A;
SJMP ED; 处理结束,跳出循环
NEXT:
MOV 30H,#20H
ED:
SJMP $;
循环问题,循环减一加一,送出数据
MOV R7,#16
MOV DPTR,#1000H;
MOV R0,#20H;
NRXT:
MOVX A,@DPTR;
MOV @RO,A;
INC RO;
INC DPTR;
DJNZ R7,NEXT
SJMP $;
DB存储字节
DW存储字
DS存储空间
外部中断0控制位:P3.2
外部中断1控制位:P3.3
CPU面向I/O的服务有:查询,中断,DMA
串行口中断包含串行发送和串行接收两种,不会自动清零
定时器/计数器:
设计流水灯,时间间隔500ms,程序:
ORG 0000H
LJMP MAIN
ORG 001BH
LJMP TIMER_ISR
MAIN:
MOV R3,#10;
MOV TOMD,#00H;
MOV TH1,#3CH;
MOV TL1,#0B0H;
MOV R2,#07H;
MOV P1,#0FEH;
MOV A,#0FEH;
CLR 00H;
SETB TR1;
SJMP $;
TIMER_ISR:
DJNZ R3,EXIT_ISR
MOV R3,#10;
JB 00H,RIGHT_SHIFT
RL A;
MOV P1,A;
DJNZ R2 EXIT_ISR
SETB 00H;
MOV R2,07H;
SJMP EXIT_ISR
RIGHT_SHIFT:
RR A;
MOV P1,A;
DJNZ R2,Exit_T1_ISR;
CLR 00H;
MOV R2,#07H;
Exit_T1_ISR:
RET1
END
简述 STC15F2K60S2 单片机串行口 1 方式 2、方式3 的相同点与不同点。
(1) 相同点:字符帧格式是一样的。
(2) 不同点:波特率发生器不同。
双机通信时必须保持波特率一致。
微处理器与外部设备的数据传输方式:
查询方式,DMA(直接存储器访问模式:数据传输时无需CPU进行参与),中断方式
作业:中断处理的各个流程(图片)
嵌入式系统不止是单片机,主要分为嵌入式微处理器,嵌入式微控制器,嵌入式DSP
🌟AD转换的步骤:
1:打开ADC电源
2:设置延时等待ADC内部稳定
3:设置P1口中相应的口线作为模拟量输入通道
4:选择ADC通道,CHS2-CHS0
5:根据需要设置转换存储格式
6:启动AD转换
7:查询AD转换结束标志ADC_FLAG,完成则保存AD转换结果
8:若采用中断方式需要设置中断读取结果
P1ASF不能位寻址,1:ADC输入,0:IO口
35H:0011 0101
ADC_CONTR:
串行通信:
串行发送和串行接收,中断不会自动接收
异步通信-》波特率
波特率:每秒钟传送二进制数码的位数(bit/s=bps)
同步通信传输要求发送时钟和接收时钟必须严格保持同步
SCON-98H,可位寻址
REN 允许串行同行接收控制位,软件置为和清零
TI发送中断标志位,RI接收中断标志位
设置定时器程序:
MOV TMOD ,#00H;
MOV TL1,0F4H;
MOV TH1,0BH;
SETB TR1;
T0四种工作方式,T1三种工作方式,处于方式0时都是16位可重装初值的定时器计数器
C/T=0:定时 ,C/T=1:计数
独立式键盘,矩阵式键盘
编程扫描,定时扫描,中断扫描
单主单从
互为主从
一主多从
(1) 在任一磁盘下建立一个专门用于存放MCS-51单片机实验程序的文件夹,比如在D:盘中建立名为C51TEST的文件夹,在此文件夹中再新建一个名为LED_One_Flashing的文件夹,用来存放即将建立的工程及其相关的程序、编译文件。
(2) 启动Keil C51集成开发环境。从桌面上直接双击Keil C51图标 ,启动该软件。
(3) 建立工程文件LED_One_Flashing。在环境中,鼠标左键点击“Project”→“New Project”,出现“Create New Project”对话框。在“保存在”下拉列表框中选择工程的保存目录D:C51TEST LED_One_Flashing文件夹,然后在文件名文本框中输入工程名(如LED_One_Flashing),不需要扩展名,单击保存按钮。
单击保存按钮后,出现如图1-4所示的“Select Device for Target ‘Target 1’”对话框。根据自己的开发板上的单片机芯片,选取相应的CPU。本实验使用89C52芯片,在这里我们选取Atmel公司的AT89C52芯片,单击“Atmel”前面的“ ”号,展开该层,找到其中的“AT89C52”,然后单击确定,此时会弹出图1-5(如果没有弹出则不用管,直接进行下一步),此处是问你是否确定把标准8051启动代码复制到项目文件夹和添加到项目工程中,单击“是”,回到主界面。
(4) 编辑C语言源文件。在主界面里“File”→“New”或者点击工具栏中的 ,出现的文件编辑窗口,在该窗口编写源程序,编辑完程序点击图标保存该文件,保存到默认工程文件路径:D:C51TEST LED_One_Flashing文件夹中,在“文件名”编辑框内填写文件名如:LED_One_Flashing.c(注保存时扩展名必须为“.c”)。
(5) 将工程窗口中“Target 1”前面的“ ”号展开,在“Source Group 1”上单击鼠标右键打开快捷菜单。再单击“Add File to Group ‘Source Group 1’”选项,弹出的“Add File to Group ‘Source Group 1”对话框。直接选中D:C51TEST LED_One_Flashing文件夹中的LED_One_Flashing.c文件,然后点击“Add”。
点击“Add”后,将“Add File to Group ‘Source Group 1”对话框关闭,此时在左边文件夹“Source Group 1”前面会出现一个“ ”号,单击“ ”号展开后,会出现一个名为“LED_One_Flashing.c”的文件,说明新文件添加已完成。
(6) 配置工程属性。将鼠标移动到左边窗口的“Target 1”上,单击鼠标右键打开快捷菜单,再单击“Options for Target ‘Target 1’”选项,弹出的“Options for Target ‘Target 1’”对话框;也可以通过点击工具栏里的 进入“Options for Target ‘Target 1’”对话框。在此对话框内,先点击“Target”来到“Target”选项卡,然后在Xtal栏中配置晶振频率。由于本实验用的开发板的单片机的晶振为12M,故这里填12。
设置完“Target”选项卡后,再点击“Output”来到“Output”选项卡,勾“Create HEX File”选项,勾选此项是为了输出十六进制目标代码,此代码将被下载到单片机中脱机运行。
(7) 编译源文件得到目标代码文件(.HXE文件)。回到Keil C51的主界面,点击编译按钮(图1-13中的红色方框内的图标)编译源文件。如果源文件没有错误,则在存放项目和源代码文件夹内出现.HEX文件。