推荐阅读最新更新时间:2024-10-21 07:05
c51单片机寻址结构
最近要一直uc/os,需要补习一下汇编
[单片机]
单片机C51汇编指令之寻址方式学习心得
1.寄存器寻址 指令举例:MOV A,R0 该指令功能:将寄存器R0中的内容送累加器A中 详细说明:假设R0中的内容是16进制数20H,那么执行这条指令之后,累加器A中的内容是20H 即十进制数:32 2.直接寻址 指令举例:MOV A,30H 该指令功能:将地址单元30H中的内容送累加器A中 详细说明:假设地址单元30H中的内容是20H,那么执行该指令之后,累加器A中的内容是:20H 即十进制数32 3.寄存器间接寻址 指令举例:MOV A,@R0 该指令功能:将R0指向的内存单元中的内容送累加器A中 详细说明:为和寄存器直接寻址区别,汇编语言中,寄存器间接寻址中的寄存器前面会加上一个
[单片机]
单片机C语言C51的程序结构
(1)C51中定义的库函数和标准C语言定义的库函数不同。标准的C语言定义的库函数是按通用微型计算机来定义的,而C51中的库函数是按51单片机相应情况来定义的; (2)C51中的数据类型与标准C的数据类型也有一定的区别,在C51中还增加了几种针对51单片机特有的数据类型; (3)C51变量的存储模式与标准C中变量的存储模式不一样,C51中变量的存储模式是与51单片机的存储器紧密相关; (4)C51与标准C的输入输出处理不一样,C51中的输入输出是通过51串行口来完成的,输入输出指令执行前必须要对串行口进行初始化; (5)C51与标准C在函数使用方面也有一定的区别,C51中有专门的中断函数。
[单片机]
单片机C语言C51程序中的基本结构
一.顺序结构 顺序结构是最基本、最简单的结构,在这种结构中,程序由低地址到高地址依次执行,如图给出顺序结构流程图,程序先执行A操作,然后再执行B操作。 二.选择结构 选择结构可使程序根据不同的情况,选择执行不同的分支,在选择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为“真”时,执行一个分支,当条件不成立时,即条件语句为“假”时,执行另一个分支。如图:当条件S成立时,执行分支A,当条件P不成立时,执行分支B。 在C51中,实现选择结构的语句为if/else,if/else if语句。另外在C51中还支持多分支结构,多分支结构既可以通过if和else if语句嵌套实现,可用swith/case语句实现。
[单片机]
C51单片机的中断体系结构
80C51的中断系统有5个中断源(8052有 6个) ,2个优先级,可实现二级中断嵌套 。MCS-51系列单片机中断系统的机构如下: 与中断系统相关的特殊寄存器: 1)中断允许控制寄存器(IE)------ 控制各中断的开放和屏蔽 2)中断优先级控制寄存器(IP)------设置各中断的优先级 3)定时器/计数器控制寄存器(TCON)----定时器和外部中断的控制 4)串行口控制寄存器(SCON)------串行中断的控制 中断类型分为三类: 1)T0、T1是2个定时器/计数器中断,由片内定时器提供; 2)INT0、INT1是2个外部中断,由引脚P3.2和P3.2提供; 3)RX、TX为串行口中断所用,由片内串口提供。
[单片机]
关于C51绝对寻址的问题
在keilC51中 基本有两种绝对寻址方式,尽量都不要使用。毕竟C51中内存地址是由软件自动设置好了的。如果不熟悉就滥用反而引起程序出现问题。 调试的程序如下: #include reg52.h #include absacc.h #define uchar unsigned char #define uint unsigned int //#define led_on DBYTE idata char led_on _at_ 0x01; void main() { led_on = 0x0F; while(1) { P0 = led_on; } } 方式1: XBYTE :一般是用在扩展
[单片机]
Keil C51 xdata基址偏址寻址试验
本人最近用KEIL C51来做一个程序,要用到外部数据存贮器,也要寻址外部别的芯片,因为要用到对外部数据的连续读写,因此对xdata做了一点详细研究。 一、 第一种方式是定义外部对址常量,程序如下: #define XRAM 0x0000 #define CYDRAM 0x1000 #define EPM244H 0x4000 #define EPM244L 0x5000 void readdata(unint add) { volatile unchar xdata *xramadd; xramadd=CYDRAM+add; //just produce the CS signal
[单片机]