/* 名称:开关控制报警器说明:用 K1 开关控制报警器,程序控制 P1.0 输出两种不同频率的声音,模拟很逼真的报警效果*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit SPK=P1^0;sbit K1=P1^7;&n[详细]
在MCS-51单片机应用系统中,一般应设计循环程序、查表程序、散转程序、数值转换程序、复电运算程序等。还要有一些与外围芯片、外围设备有关的应用程序,如显示键盘、打印、采样等。前者,可参考一些子程序库;对于后者,要根据不同的硬件电路和系统要求进行设计。 [详细]
PIC的编程是比较简单的,但是对于初学者来说还是有些概念不太容易理解,从而影响编程。例如,PIC单片机初学者在编写程序时就比较容易在BANK设置和PC操作上出错。1、 BANK设置错误:先来看一段程序:includePORTDB EQU 20H……STARTmovlw b‘11110000’movwf PORTDBclrf TRISD[详细]
在C51中,如何访问DATA空间、PDATA空间、XDATA空间、CODE空间某个确定地址单元?答:用指针定义的访问存储器的宏使用时需要用预处理命令把该头文件包含到文件中,形式为:#include 。(1)按字节访问存储器宏的形式宏名[地址](2)按整型数访问存储器宏的形式宏名[下标] [详细]
写这个8*8按键程序的过程中,不管是在自己写还是参考别人程序的过程中,发现自己对C语言有些基本知识点和编程规范有很多不懂的地方,有些是自己以前的编程习惯不好,有些就是基础知识不扎实的表现,所以总结出来。一、.H文件与.C文件的关系:迄今为止,写过的程序都是一些很简单的程序,从来没有想到要自己写[详细]
1、在某程序中需要定义如下变量:(1)定义数码管的显示0~9的共阴极显示代码(0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07, 0x7f, 0x6f)数组dis_code,将其定义在CODE区。(2)定义定时器/计数器0的赋计数值的高、低字节变量TL0_L和TH0_H,将其定义在DATA去区的0x30、0x31处。(3)定义长度为20的无符号字符型数组da[详细]
1)auto这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。(2)register这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高[详细]
在C51中,函数返回值传递的规则是什么?答:(1)调用时参数的传递分三种情况:少于等于3个参数时通过寄存器传递(寄存器不够用时通过存储区传递),多于3个时有一部分通过存储区传递,对于重入函数参数通过堆栈传递。通过寄存器传递速度最快。(2)函数返回值的传递当函数有返回值时,其传递都是通过寄存器 [详细]
/* 名称:闪烁的 LED说明:LED 按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<[详细]
如何在C51文件和汇编语言文件中相互调用对方文件中的函数?答:汇编语言文件中对于函数的调用方法,与调用汇编语言中的函数一样,如:LCALL DISPLAY在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下:extern 返回值类型 函数名(参数表);例如: extern unsigned char right_shift ( char,[详细]
1. 无论什么时候我们都要以实际应用的角度去考虑程序的编写。2. 无论什么时候都不要让CPU白白浪费等待,尤其是延时(超过1MS)这样的地方。3.设计相应驱动电路时候,应该仔细阅读芯片的数据手册,了解每个引脚的驱动能力,以及整个芯片的驱动能力。4.最重要的是,如何去释放CPU(如果是led每500ms闪烁一次,那么[详细]
1 简 述所有的中档系列PIC单片机,PORTB端口最高的4个引脚(RB7~RB4)在设为输入模式时,当输入电平由高到低或由低到高发生变化时,可以让单片机产生中断。这就是通常所说的引脚状态变化中断。在设计引脚中断程序时,有三个需要特别注意的地方。一是,在清除P0RTB中断标志位RBIF之前,必须安排一条必不可少的,[详细]
1.编写一C51函数,把从键盘输入的5位十进制数数转换成一个无符号整型数(假设未超出整型数范围)。设从键盘输入的数存放在一无符号数组中,低位数为低下标元素。unsigned char data key_buffer[5];unsigned int trans_int(void){ unsigned char data i; unsigned in[详细]
/* 名称:8 只 LED 左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uin[详细]
(1)这两天一直在受一个问题的干扰,那就是做单片机串口通信的时候,有些数据总是传得不对:当显示0~f这些数字的时候,显示没有错误,而显示其它8位数据的时候都错了,发送11(16进制)时,到单片机上居然是49(十进制),这显然是不对的,一直怀疑是程序的问题,反复地检查和修改之前编的一个数码管动态显示子程序[详细]
曾在某个论坛上看过这样一句话——给每个模块都分配一个时间,这样才能写好汇编。当时觉着有些道理,却不能很深地体会。记得刚学单片机汇编的时候,印象最深的莫过于循环点亮一排led.。先点亮一个、延时、计数值不为零则移位(寄存器)点亮下一个......十分类似于c中的while(n--){//...led=1;dela[详细]
//ADS1.2下编译使用void TestFun(char* fmt,...){int ch;char selch = 0;va_list ap = NULL;va_start(ap, fmt);do{selch = *fmt;if (selch!='%'){putchar(*fmt);}else{selch = *++fmt;switch(selch){case 'c':ch = va_arg(ap, int);printf("%c",ch);break;case 'd':ch = va_[详细]
/* 名称:从左到右的流水灯说明:接在 P0 口的 8 个 LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int //延[详细]
扫码关注我们
0755-82591179
传真:0755-82591176
邮箱:vicky@yingtexin.net
地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A08
Copyright © 2014-2025 颖特新科技有限公司 All Rights Reserved. 粤ICP备14043402号-4