#include #include #include #include "UPSD3200.H"#include "upsd_pwm.h"#define uint unsigned int#define uchar unsigned charPSD_REGS PSD8xx_reg _at_ csiop;#define KEYIO (~(PSD8xx_reg.DATAIN_A)) & 0x07sbi
/*******************************************KEIL里扩展出了b,h,l来对输入字节宽的设置:(1)b八位(2)h十六位(默认)(3)l三十二位在Keil C51中用printf输出一个单字节变量时要使用%bd,如unsigned char counter
Interrupt Functions中断函数8051及其变种提供了一定数量的硬件中中断,这些中断有:Interrupt Number Interrupt Description Address0 EXTERNAL INT 0 0003h1 TIMER/COUNTER 0 000Bh2 EXTERNAL INT 1 0013h3
#define ROMADDRESS0xA0sfr IIC_CON = 0xA0; sbit WP = IIC_CON^5;sfr IIC_INTER = 0x90; sbit SCL = IIC_INTER^6; sbit SDA = IIC_INTER^7;bit ack; /*应答标志位*/void DelayMs(unsigned char i) { unsigned
C51函数声明对ANSI C作了扩展,具体包括:1.中断函数声明:中断声明方法如下:void serial_ISR () interrupt 4 [using 1]{/* ISR */}为提高代码的容错能力,在没用到的中断入口处生成iret语句,定义没用到的中断。/*
1. LAB100.C(12): error C216: subscript on non-array or too many dimensions 原程序如下:#include#includevoiddelay(int);unsignedcharcodedis_code[8]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a};main(){inti,
汇编是从org 0000h开始启动,那么keil c51是如何启动main()函数的?keil c51有一个启动程序startup.a51,它总是和c程序一起编译和链接。下面看看它和main()函数是如何编译的;//主函数如下;void main(void){while (
对 51 单片机内存的认识,很多人有误解,最常见的是以下两种① 超过变量128后必须使用compact模式编译 实际的情况是只要内存占用量不超过 256.0 就可以用 small 模式编译② 128以上的某些地址为特殊寄存器使用,不能
code是KEIL C51 扩展的关键字,用code修饰的变量将会被放到CODE区里。但C语里的const关键字好像也有定义不能改变的变量的功能,这两个关键字有什么区别呢?在帮助手册里查找const,可以找到以下的描述1 Variables
找到了一个现成的例子,对于读写U盘,文件系统是个大麻烦。现在一直还没有弄明白,先收藏一下这个程序先,等到后面慢慢研究。 作者这个编程规范不错,注释很丰富,值得学习。#include#include"CH375INC.H"#include/*
/* 6位数码管演示程序: 显示数码从0---99循环,按 P3.2 按键,显示从"0" 开始*/#i nclude int count1s; unsigned int count1m; unsigned char dis_bitcount=0; unsigned char display_o[6]; unsigned char displa
编程首要是要考虑程序的可行性,然后是可读性、可移植性、健壮性以及可测试性。这是总则。但是很多人忽略了可读性、可移植性和健壮性(可调试的方法可能歌不相同),这是不对的。1.当项目比较大时,最好分模块编程,一
Segment Naming Conventions程序段命名约定Cx51编译器生成的目标(程序代码,程序数据和常量数据)都以程序段的形式存放,段是代码和数据的单元。一个段可能是可重定位的,也可能地址是绝对的。每一个可重定位的段都
很多朋友都在想,怎么让keil C51与ARM能够并存使用。有安装经验的朋友都知道,安好C51后再安ARm,C51不能正常工作;安好ARM后再安C51,ARM不能正常工作.网上也有相关解决办法,不过不怎么样,要么不详细,要么就是复
一般的编译器将函数中的区域变数动态配置在stack,等函数结束空间就释放出来。因为8051 的内部记忆体很少,只有区区128 或256 bytes,而且stack 也是共用这块记忆体。为了节省stack 空间,所以区域变数基本上是静
前面的文章中介绍了 C 语言的基本数据类型,为了更有效的处理更复杂的数据,C 语 言引入了构造类型的数据类型。构造类型就是将一批各种类型的数据放在一起形成一种特殊 类型的数据。之前讨论过的数组也算是一种构造类
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8类:8051存储类型及存储区域存储模式存储器类型声明变量类型声明位变量与位寻址特殊功能寄存
一、实现延时的两种方法1、硬件延时优点:用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;缺点:往往在精度要求不是很高时,会使定时器/计数器大材小用,而且很极端时,定时器根本不够的。2、
#include #define uchar unsigned char#define uint unsigned int//延时子程序void mDelay(uchar Delay){ uchar i; for(;Delay>0;Delay--) { for(i=0;i
定义这样的结构: typedef struct { uchar DC0_ALA:1; //电源0告警 uchar DC1_ALA:1; //电源1告警 uchar AC_ALA:1; //停电告警 uchar UN_H_ALA:1; //同频信道机失锁告警 uchar UN_L_ALA:1; //异频信道机失锁告警 uch