📄 非常优秀代码.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 + -