#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來對輸入字節(jié)寬的設(shè)置:(1)b八位(2)h十六位(默認)(3)l三十二位在Keil C51中用printf輸出一個單字節(jié)變量時要使用%bd,如unsigned char counter
Interrupt Functions中斷函數(shù)8051及其變種提供了一定數(shù)量的硬件中中斷,這些中斷有: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; /*應(yīng)答標志位*/void DelayMs(unsigned char i) { unsigned
C51函數(shù)聲明對ANSI C作了擴展,具體包括:1.中斷函數(shù)聲明:中斷聲明方法如下: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()函數(shù)的?keil c51有一個啟動程序startup.a51,它總是和c程序一起編譯和鏈接。下面看看它和main()函數(shù)是如何編譯的;//主函數(shù)如下;void main(void){while (
對 51 單片機內(nèi)存的認識,很多人有誤解,最常見的是以下兩種① 超過變量128后必須使用compact模式編譯 實際的情況是只要內(nèi)存占用量不超過 256.0 就可以用 small 模式編譯② 128以上的某些地址為特殊寄存器使用,不能
code是KEIL C51 擴展的關(guān)鍵字,用code修飾的變量將會被放到CODE區(qū)里。但C語里的const關(guān)鍵字好像也有定義不能改變的變量的功能,這兩個關(guān)鍵字有什么區(qū)別呢?在幫助手冊里查找const,可以找到以下的描述1 Variables
找到了一個現(xiàn)成的例子,對于讀寫U盤,文件系統(tǒng)是個大麻煩?,F(xiàn)在一直還沒有弄明白,先收藏一下這個程序先,等到后面慢慢研究。 作者這個編程規(guī)范不錯,注釋很豐富,值得學習。#include#include"CH375INC.H"#include/*
/* 6位數(shù)碼管演示程序: 顯示數(shù)碼從0---99循環(huán),按 P3.2 按鍵,顯示從"0" 開始*/#i nclude int count1s; unsigned int count1m; unsigned char dis_bitcount=0; unsigned char display_o[6]; unsigned char displa
編程首要是要考慮程序的可行性,然后是可讀性、可移植性、健壯性以及可測試性。這是總則。但是很多人忽略了可讀性、可移植性和健壯性(可調(diào)試的方法可能歌不相同),這是不對的。1.當項目比較大時,最好分模塊編程,一
Segment Naming Conventions程序段命名約定Cx51編譯器生成的目標(程序代碼,程序數(shù)據(jù)和常量數(shù)據(jù))都以程序段的形式存放,段是代碼和數(shù)據(jù)的單元。一個段可能是可重定位的,也可能地址是絕對的。每一個可重定位的段都
很多朋友都在想,怎么讓keil C51與ARM能夠并存使用。有安裝經(jīng)驗的朋友都知道,安好C51后再安ARm,C51不能正常工作;安好ARM后再安C51,ARM不能正常工作.網(wǎng)上也有相關(guān)解決辦法,不過不怎么樣,要么不詳細,要么就是復
一般的編譯器將函數(shù)中的區(qū)域變數(shù)動態(tài)配置在stack,等函數(shù)結(jié)束空間就釋放出來。因為8051 的內(nèi)部記憶體很少,只有區(qū)區(qū)128 或256 bytes,而且stack 也是共用這塊記憶體。為了節(jié)省stack 空間,所以區(qū)域變數(shù)基本上是靜
前面的文章中介紹了 C 語言的基本數(shù)據(jù)類型,為了更有效的處理更復雜的數(shù)據(jù),C 語 言引入了構(gòu)造類型的數(shù)據(jù)類型。構(gòu)造類型就是將一批各種類型的數(shù)據(jù)放在一起形成一種特殊 類型的數(shù)據(jù)。之前討論過的數(shù)組也算是一種構(gòu)造類
深入理解并應(yīng)用C51對標準ANSIC的擴展是學習C51的關(guān)鍵之一。因為大多數(shù)擴展功能都是直接針對8051系列CPU硬件的。大致有以下8類:8051存儲類型及存儲區(qū)域存儲模式存儲器類型聲明變量類型聲明位變量與位尋址特殊功能寄存
一、實現(xiàn)延時的兩種方法1、硬件延時優(yōu)點:用到定時器/計數(shù)器,這種方法可以提高CPU的工作效率,也能做到精確延時;缺點:往往在精度要求不是很高時,會使定時器/計數(shù)器大材小用,而且很極端時,定時器根本不夠的。2、
#include #define uchar unsigned char#define uint unsigned int//延時子程序void mDelay(uchar Delay){ uchar i; for(;Delay>0;Delay--) { for(i=0;i
定義這樣的結(jié)構(gòu): 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