推荐阅读最新更新时间:2024-03-16 13:21
关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用
如何在 KEIL C51(v6.21) 中调用汇编函数的一个示例 有关c51调用汇编的方法已经有很多帖子讲到,但是一般只讲要点,很少有对整个过程作详细描述,对于初学者是不够的,这里笔者 通过一个简单例子对这个过程进行描述,希望能对初学者有所帮助。几年来,在这个论坛里笔者得到很多热心人指导,因此也希望 藉此尽一点绵薄之力。 在这个例子里,阐述了编写c51程序调用汇编函数的一种方法,这个外部函数的入口参数是一个字符型变量和一个位变量,返回值是 一个整型变量。例中,先用c51写出这个函数的主体,然后用SRC控制指令编译产生asm文件,进一步修改这个asm文件就得到我们所 要的汇编函数。该方法让编译器自动完成各种段的安排,提高了汇编程序
[单片机]
基于C51单片机的MP3播放器设计
0 引言 便携式MP3播放器作为一种集音频播放、数据存储为一身的数码产品,其功能结构为电子设计人员所津津乐道。MP3是MPEG一1音频III(1ayerIII)的简称。MPEG一1音频(ISO/IECll 172—3)是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果也最好,在低码率的条件下基本能达到CD的音质效果。MP3标准用尽可能低的码流实现CD音质的声音而不会产生数据损失。如果对于一段声音不进行压缩的话,那么每存储一秒钟的立体声CD音质音乐必须用1.4Mbit,这是个十分大的开销。通过运用MPEG音频标准的压缩技术,我们可以把存储空间压缩到原来的1/12而不会降低声音的音质。即使使用1/24的压
[单片机]
ARM汇编语言中的符号
在ARM汇编语言中,符号可代表地址、变量和数字常量。当符号代表地址时又被称为标号。标号包含变量、数字常量、标号和局部标号。 符号的命名规则如下: 符号由大小写字母、数字以及下划线组成。 局部标号以数字开头,其他符号都不能以数字开头。 符号是区分大小写的。 符号中在其作用范围内必须惟一,即在其作用范围内不可有同名的符号。 程序中的符号不能与系统内部变量或者系统预定义的符号同名。 程序中的符号通常不要与指令助记符或者伪操作同名。 (1) 变量 在ARM汇编语言中,变量有数字变量、逻辑变量和串变量3种类型。变量的类型在程序中是不能改变的。数字变量的取值范围为数字常量的数字表达式所能表示的数值范围。关于
[单片机]
经典防抖动键C51源程序
********************************************************/ //单片机四独立按键控制四LED; //四个独立按键对应四个独立的LED. //当某一按键按下时对应的LED亮,当第二次按下时灭。 //四个LED只能有一个亮,初学者可以参考以下程式: /********************************************************/ #i nclude reg52.h unsigned char k_scan(); unsigned char k_pro(); unsigned char k_new,k_old; unsigned char
[单片机]
C51单片机 串口通信RX&TX
画图 最简单的串口通信代码 *难解释。没了解单片机内部怎么运行,可能看不懂 * #include reg52.h #include stdio.h sbit led=P1^0; void initUart()//最最最基本的 *串口通信初始化* 要熟记 { //首先来个定时器1工作方式2//0010 0000 TMOD = 0x20; TH1 = 0xfd;//波特率9600/晶振11.0592Mhz TL1 = 0xfd; TR1=1; //串口工作方式1为最常用0101 0000 SCON=0x50; //打开总中断 EA=1; //允许串口中断 E
[单片机]
浅谈单片机的按键去抖问题
简介:本文是我用C51语言写的一个按键去抖程序,大家定会问为什么要去抖呢,说到这里,我要说下去现在去抖的方法有几种,去抖有两种方式,一种是硬件去抖,一种是软件去抖,硬件去抖是加一个电容就可以了,这要加大成本,和电路的复杂性。我们在开发C51的时候一般最常用的是软件去抖。下面看这个矩阵键盘的去抖程序吧。 #include reg52.h #include intrins.h #define uchar unsigned char sfr KeyPort=0x90;//#define KeyPort P1 -----行在P1口低四位 sbit Key_C1=P1^4; //第1列接P1.4 sbit Key_C2=P1^5;
[单片机]
课程设计:矩阵键盘(c51,使用扫描法实现)
//可以比较一下和以前发表的一篇用反转法实现的不同(感觉一下那个更简单) //这种方法是用只用P3口的前高四位来比较,看改变了么(由于比较仓促,没有proteus仿真,不过这是个比较经典的方法,网上有很多这个代码,源自郭天祥的视频和书籍) #include reg52.h #define uchar unsigned char #define uint unsigned int sbit wela=P2^7; sbit dula=P2^6; uchar num,num1; unsigned char code table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0
[单片机]
C51单片机小程序(一)
好久没碰单片机了,有些生疏了。到现在还依稀记得自己独自坐在电脑屏幕前自学单片机,硬生生的去看了单片机的基础,现在想想还是挺有趣的。附上当初一点初学的单片机小程序,请大家多多指教! 用P1口作为输出口,接8位用作逻辑电平显示的发光二极管。设计程序使发光二极管间隔300ms先奇数亮再偶数亮,循环3次;一个发光二极管亮上下循环3次;两个分别从两边向中间流动3次;再从中间向两边流动3次;8个全部闪烁3次;关闭全部发光二极管,停止。 综合实验程序: #库定义 #include reg52.h #include intrins.h sbit led=P1^0; #位定义 int i,j,k,num,e,p,m;
[单片机]