物联网控制技术 知识点总结 第三章 汇编语言 第四章 C51语言

51单片机的编程语言

编程语言的应用主要出现在综合应用题使用编程语言设计算法,多结合实验实例,练习编程能力,小编觉得不用纠结语言。

汇编语言

结合寻址方式理解汇编语言指令

51单片机的寻址方式

结合51单片机的体系结构来理解不同的寻址方式

立即寻址

操作数包含在指令代码中,称为立即数,用"#"表示。

寻址空间:程序存储器

masm 复制代码
MOV A, #30H 
直接寻址

直接使用数所在的单元的地址找到操作数。

寻址空间:片内RAM低128字节、SFR

masm 复制代码
MOV A, 00H 
寄存器寻址

对工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR中的数进行操作。

寻址空间:工作寄存器R0~R7, A, B, DPTR

masm 复制代码
MOV A, Rn
寄存器间接寻址

将寄存器中存储的地址处的数据取出。"@"间址提示符。

寻址空间:

片内RAM: @R0, @R1, SP

片外RAM: @R0, @R1, @DPTR

asm 复制代码
MOV A, @R0
变址寻址

常用于访问存放在ROM单元中的数据表格,实现查表操作。

ROM:@A+PC, @A+DPTR

asm 复制代码
MOVC A, @A+DPTR
相对寻址

将PC中的当前内容(基地址)与指令第二字节给出的数(偏移量)相加,结果作为跳转指令的转移地址。

寻址空间:ROM256字节范围内:PC+偏移量

asm 复制代码
JC 23H ;若C=1则跳转至 当前PC基地址+23
位寻址

对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。

寻址空间:片内RAM的位寻址区(20H~2FH字节地址)某些可位寻址的专用寄存器SFR

asm 复制代码
MOV C, 30H
SETB 3DH

C51语言

C51语言,使用C51语言写中断

中断服务函数

函数类型 函数名 (形式参数表)interrupt nusing n

  1. 中断函数没有返回值
  2. 中断函数不能进行参数传递
  3. 任何情况下都不能直接调用中断函数
  4. 如果在中断函数中再调用其他函数,则被调用的函数所使用的寄存器区必须和中断函数使用的寄存器区不同

中断初始化程序:选择外部中断的触发方式、开中断、设置中断优先级

中断服务程序

控制8只LED交替闪烁

c 复制代码
#include <reg51.h>
//定义延时函数Delay(),i时形式参数,不能赋初值
void Delay(unsigned int j){
	unsigned int j;
	for(;i>0;i--)
		for(j=0;j<333;j++)
			{;}		//空函数
}
//主函数
void main(){
	EA=1;		//总中断允许
	EX0=1;		//外部中断0中断允许
	IT0=1;		//选择外部中断0为跳沿触发方式
	while(1){	//循环
		P1=0;	//P1口的8至LED全亮
	}
}
void int0()interrupt 0 using 0{
	EX0=0;		//禁止外部中断0中断
	P1=0x0f;	//低4位LED灭,高4位LED亮
	Delay(800);	//延时800ms
	P1=0xf0;	//高4位LED灭,低4位LED亮
	Delay(800);	//延时800ms
	EX0=1;		//中断返回前,打开外部中断0中断
}

定时器0方式1中断

c 复制代码
#include <reg51.h>
char i=100;		//给变量i赋初值
void main(){
	TMOD=0x01;	//设置定时器T0为方式1
	TH0=0xee;	//向TH0写入初值的高8位
	TL0=0x00;	//向TL0写入初值的低8位
	P1=0x00;	//P1口8只LED点亮
	EA=1;		//总中断允许
	ET0=1;		//定时器T0中断允许
	TR0=1;		//启动定时器T0
	while(1);	//循环
	{;}
}
//定时器T0中断服务程序
void T0_int(void) interrupt 1{
	TH0=0xee;	//给T0装入16位初值,计数4608后,T0溢出
	TL0=0x00;
	i--;		//循环次数减1
	if(i<=0){
		P1=~P1;	//P1口按位取反
		i=100;	//重新设置循环次数
	}
}

串行口方式0

c 复制代码
#include <reg51.h>
#include <stdio.h>
sbit P10=0x90;
Xdata char nIndex;
Delay();
main(){
	SCON=0x00;		//串行口初始化为方式0
	ES=1;
	EA=1;			//全局中断允许
	nIndex=1;
	SBUF=nIndex;
	P10=0;
	while(1){;}
}
void Serial_Port()interrupt 4 using 0{
	if(TI==1){
		P10=1;
		Delay();
		P10=1;
		nIndex<<=1;
		if(nIndex==0) nIndex=1;
		SBUF=nIndex;
	}
	TI=0;
	RI=0;
}
Delay(){
	int nCounter;
	for(nCounter=0;nCounter<128;nCounter++);
}
相关推荐
xxwxx__20 分钟前
51单片机电机控制全攻略:直流电机、舵机与步进电机
c语言·单片机·嵌入式硬件·51单片机
久爱物联网9 小时前
个人站点(博客)开发案例 - 功能齐全,在线客服-即时通讯-物联网控制、广告位管理、按钮级权限控制
物联网·个人博客·即时通讯在线客服·物联网控制·博客发布系统·新闻发布系统
兆龙电子单片机设计11 小时前
【STM32项目开源】STM32单片机语音分类垃圾桶-蓝牙APP
stm32·单片机·嵌入式硬件·物联网·开源·自动化·毕业设计
厦门辰迈智慧科技12 小时前
管网遥测终端机赋能城市安全的核心价值
物联网·遥测终端机·管网遥测终端机·排水管网遥测终端·管网遥测终端
七仔啊12 小时前
modbus快速入门
物联网
Lumos6fly14 小时前
51单片机从零到实战(15)——数字时钟温度计
单片机·嵌入式硬件·51单片机
论迹复利18 小时前
PSA Certified 是什么——物联网芯片安全认证的三级体系
物联网·struts·安全
MetrixAeroCore19 小时前
AI玩具出海用物联网卡还是eSIM?200国漫游和本地落地卡成本差多少?
物联网
数智顾问1 天前
(84页PPT)PWC海科集团生物医药业务5年发展战略项目建议书(附下载方式)
大数据·人工智能·物联网
MetrixAeroCore1 天前
智能快递柜格口监控物联网卡在老旧小区弱网环境下多运营商切换组网方案
物联网