⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 非常优秀代码.c

📁 这是一个关于avr的编程 是公司里的一个工程师写的 写的很漂亮 给大家一个学校的机会吧
💻 C
字号:
/*****************************************************
This program was builded by the CodeVisionAVR V1.24.8 Standard

Project : 房号注册器
Version : 1.00
Date    : 2008-4-28
Author  : DOLLY
Company : XingGuang
Comments: 车间测试程序

Chip type           : ATmega16
Program type        : Application
Clock frequency     : 8.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 96
*****************************************************/


typedef unsigned char uchar;
typedef unsigned int  uint;
typedef unsigned long ulong;	// Type Define

#include <mega16l.h>
#include <delay.h>


//****************************************************
// 定义说明
#define fosc 8000000	// 晶振频率

#define LED_COM0	PORTC.0		// LED显示位选
#define LED_COM1	PORTC.1
#define LED_COM2	PORTC.6
#define LED_COM3	PORTC.7

#define KEY_SEG0	DDRD.3   //按键部分【segment:部分】 
#define KEY_SEG1	DDRD.4
#define KEY_SEG2	DDRD.5

#define BEEP	PORTD.2

// WDTCR
#define	WDTOE	4
#define	WDE		3
#define	WDP2	2
#define	WDP1	1
#define	WDP0	0

// Serial Port
#define TXB8 UCSRB.0
#define RXB8 1
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

// USATR
#define FRAMING_ERROR (1<<FE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
#define MPCM	UCSRA.0
#define TXCIE	UCSRB.6
#define RXCIE	UCSRB.7
#define TXEN	UCSRB.3			// 发送允许
#define RXEN	UCSRB.4			// 接收允许

// Macro define  //大量的宏定义
#define _WDR()	#asm("wdr")  //函数的宏定义
#define _SEI()	#asm("sei")
#define _CLI()	#asm("cli")


//命令字
#define mUartHeadCode		0x55
#define	mH_setnum_irq		0xf0	//设置房号请求
#define	mH_setnum_ack		0xf1	//设置房号请求回应
#define	mH_setnum_dat		0xf2	//设置房号数据

#define	SetNum_Access_Code1	0xAA	//特征代码
#define	SetNum_Access_Code2	0xBB
#define	SetNum_Access_Code3	0xCC
#define	SetNum_Access_Code4	0xDD
#define	SetNum_Access_Code5	0xEE

/*
0x55,0xf0,0x00,0xAA,0xBB,0xCC,0xDD,0xEE,0x00,0x00,0x00,0x00,0x00,add	//to PT
0x55,0xf1,0x00,0xAA,0xBB,0xCC,0xDD,0xEE,0x00,0x00,0x00,0x00,0x00,add	//PT ACK
0x55,0xf2,0x00,0xAA,0xBB,0xCC,0xDD,0xEE,0xXX,0xYY,0xZZ,0x00,0x00,add	//to PT
0x55,0xf1,0x00,0xAA,0xBB,0xCC,0xDD,0xEE,0xXX,0xYY,0xZZ,0x00,0x00,add	//PT ACK
XX: channel (0~3)通道号
YY: Layer   (层号)
ZZ: Room    (房号)
*/

#define mRxDataLength		14
#define mKeyBuffLength		20
#define mPassWordLength		8
#define mRoomBuffLength		4

register uint KeyValue @2;  //register是寄存器类型, 因为寄存器访问速度最快
bit Key_N;	// 取消 *
bit Key_7;
bit Key_4;
bit Key_1;

bit Key_0;
bit Key_8;
bit Key_5;
bit Key_2;

bit Key_Y;	// 确定 #
bit Key_9;
bit Key_6;
bit Key_3;

#pragma used+  //为什么上面不用#pragma used+  
bit Key_A;
bit Key_B;
bit Key_C;
bit Key_D;
#pragma used-

//bit bPassWordInputEnable;

bit bRxEn;		// 允许接收标志
bit bRxOK;		// 接收有效标志
bit bAckSucess;		// 回应成功标志

bit bTxBuffEmpty;		// 发送缓冲区空标志

uchar cRxDelayCnt;		// 接收延时计数器(ms)
uchar cRxCnt;			// 接收字节计数器
uchar cRxChkSum;		// 校验和
uchar cTxCnt;			// 发送字节计数器

uchar cTxCommand;		// 被发送的命令
uchar cChannelNum;
uchar cLayerNum;
uchar cRoomNum;

uint iBeep_Cnt;		// 蜂鸣器延时计数器
uint cWait_Cnt;

uchar cRxBuff[mRxDataLength];		// 接收缓冲区
uchar cTxBuff[mRxDataLength]=		// 发送缓冲区
	{0x55,0xf0,0x00,0xAA,0xBB,0xCC,0xDD,0xEE,0x00,0x00,0x00,0x00,0x00,0x41};
uchar cRxData[mRxDataLength];		// 接收数据
	
#define mcTxCommand 1
#define mcRxCommand 1
#define mcChannelNum 8
#define mcLayerNum 9
#define mcRoomNum 10

uchar Led_Buff[4];	// LED显示缓冲区
//uchar Str_temp[4];	// 字符串临时数组(数据传递)
uchar Key_ch_0[mRoomBuffLength];
uchar Key_ch_1[mRoomBuffLength];
uchar Key_ch_2[mRoomBuffLength];
uchar Key_ch_3[mRoomBuffLength];

flash uchar Led_digit[] = 	// led 送显字符码,如显示小数点,当前字符减0x20
	{0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x24,0xEA,0x20,0xE0};
//    0,   1,   2,   3,   4,   5,   6,   7,   8,   9

flash uchar Led_char[] =	// 显示字符
	{0x34,0x77,0x24,0xBF,0x23,0x27,0x74,0xF7,0x37,0x65,0xA4,0x35,0x29};
//	    E,   r,   G,   _,   d,   o,  F,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -