自定义MacroWord格式文档下载.docx
- 文档编号:16644947
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:23
- 大小:21.05KB
自定义MacroWord格式文档下载.docx
《自定义MacroWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《自定义MacroWord格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
//和上面的参数一起混的,犯规---这两个的用法在后面体现
#defineREADY0x7e
自定义数据类型
typedefunsignedcharByte;
//一个字节
typedefunsignedintWord;
//一个字,两个字节
typedefbitBool;
//模仿布尔型变量
//typedefsbitPort;
//本想用自定义一个端口类型的变量,比较方便,但是这句话步知道为何通不过编译
定义MAX7219寄存器
#defineREG_NO_OP0x00
//定义空操作register
#defineDIG_10x01
//定义数码管1register
#defineDIG_20x02
//定义数码管2register
#defineDIG_30x03
//定义数码管3register
#defineDIG_40x04
//定义数码管4register
#defineDIG_50x05
//定义数码管5register
#defineDIG_60x06
//定义数码管6register
#defineDIG_70x07
//定义数码管7register
#defineDIG_80x08
//定义数码管8register
#defineREG_DECODE0x09
//定义解码控制register
#defineREG_INTENSITY0x0a
//定义显示亮度register
#defineREG_SCAN_LIMIT0x0b
//定义扫描限制register
#defineREG_SHUTDOWN0x0c
//定义"
shutdown"
模式register
#defineREG_DISPLAY_TEST0x0f//定义"
displaytest"
#defineINTENSITY_MIN0x00
//定义最低显示亮度
#defineINTENSITY_MAX0x0f
//定义最高显示亮度
/*********************************************************************
定义硬件引脚连接
**********************************************************************/
sbitDATA=P2^0;
//MAX7219的数据口
sbitLOAD=P2^1;
//MAX7219的锁存端口
sbitCLK=P2^2;
//MAX7219的时钟端口
//sbitHOST_SWITCH=P0^0;
//主持人开关的接口
sbitHOST_START=P0^0;
//主持人按键,用来重新开始的按键start
sbitHOST_CANCEL=P0^1;
//主持人用来取消抢答的按键
clear
sbitSWITCH1_3=P1^4;
//调节倒计时时间的拨码开关,下划线前面的号代表开关的序号,下划线后面的号代表该开关的数值
sbitSWITCH2_2=P1^5;
//同上
sbitSWITCH3_2=P1^6;
sbitSWITCH4_1=P1^7;
sbitBEEP=P0^7;
//定义蜂鸣器端口
sbitLS138_C=P2^4;
//定义译码器输入端
sbitLS138_B=P2^5;
//同上
sbitLS138_A=P2^6;
//同上
sbitLS138_E1=P2^7;
//定义译码器使能端
定义全局变量
BytedataintrCounter;
//计时器中断次数
BytedatabeginNum;
//开始倒计时的时间
BytedatacounterBack;
//将中断次数放在里面以备后用
BytedatashowNum;
//数码管正在显示的时间
BooldataisStart;
//是否开始抢答
BooldataisFoul;
//是否犯规
BooldataisPressed;
//是否有抢答的键按下
Bytedatanumber_temp;
//用来记录P1口上次状态的一个变量
codeunsignedcharC51BOX2[3]_at_0x43;
/***********************************************************************
共阴极七段数码管显示对应段查询表(数字0-9分别对应code_table[0]-[9])
***********************************************************************/
Bytecodecode_table_zheng[10]=
{0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};
Bytecodecode_table[10]=
{0x01,0x4f,0x12,0x06,0x4c,0x24,0x20,0x0f,0x00,0x04};
函数声明
voidMAX7219_SendByte(Bytedataout);
voidMAX7219_Write(Bytereg_number,Bytedataout);
voidMAX7219_DisplayChar(Bytedigit,Bytecharacter);
voidMAX7219_Clear(void);
voidMAX7219_SetBrightness(Bytebrightness);
voidMAX7219_DisplayTestStart(void);
voidMAX7219_DisplayTestStop(void);
voidMAX7219_ShutdownStart(void);
voidMAX7219_ShutdownStop(void);
voidMAX7219_Init(void);
voidDelay10ms(void);
BoolGetHostStartKey(void);
BoolGetHostCancelKey(void);
voidGetCounter(void);
ByteGetPressed(ByteKeyState);
voidIT0_Init(void);
voidTimer0_Overflow();
voidPressedHandle(BytekeyPressed);
voidGetOrFoulHandle(Boolstate);
voidCancelHandle();
voidSPEAKER_count(void);
//声明倒计时声音函数
voidSPEAKER_start(void);
//声明开始抢答声音函数
voidSPEAKER_get(void);
//声明抢到声音函数
voidSPEAKER_foul(void);
//声明犯规声音函数
*MAX7219_SendByte()
*
*描述:
向MAX7219传送一个字节的数据
*Arguments:
dataout=datatosend
*Returns:
none
*************************************************************************/
voidMAX7219_SendByte(Bytedataout)
{
Bytei;
for(i=8;
i>
0;
i--)
Bytemask=1<
<
(i-1);
//mask是个掩码,取位使用
CLK=0;
//MAX7219的位传入是在时钟的上升沿之前,所以在每发一位之前都要变为低电平
if(dataout&
mask)
DATA=1;
else
DATA=0;
CLK=1;
//八个bit都传递完成后变为高电平,锁存
}
*MAX7219_Write()
向MAX7219写命令
reg_number=registertowriteto
*dataout=datatowritetoMAX7219
未完~
***************************************************************************/
voidMAX7219_Write(Bytereg_number,Bytedataout)
LOAD=0;
//也是锁存上升沿之前的,发这两个字节之前要变为低电平
MAX7219_SendByte(reg_number);
//发送寄存器地址
MAX7219_SendByte(dataout);
//发送数据
LOAD=1;
//变为高电平,锁存
/**************************************************************************
*MAX7219_DisplayChar()
使某一位显示一个数字
digit=digitnumber(0-7)
*character=charactertodisplay(0-9,A-Z)
**************************************************************************/
voidMAX7219_DisplayChar(Bytedigit,Bytecharacter)
MAX7219_Write(digit,character);
*MAX7219_Clear()
清除所有位的显示
voidMAX7219_Clear(void)
Bytei;
for(i=1;
i<
=2;
i++)
MAX7219_Write(i,CLEAR);
//把八个数码管全都清零了,已经写反了^_^
*MAX7219_SetBrightness()
设置数码管显示亮度
brightness(0-15)
voidMAX7219_SetBrightness(Bytebrightness)
brightness&
=0x0f;
MAX7219_Write(REG_INTENSITY,brightness);
*MAX7219_DisplayTestStart()
进入test模式
voidMAX7219_DisplayTestStart(void)
MAX7219_Write(REG_DISPLAY_TEST,1);
*MAX7219_DisplayTestStop()
退出test模式
voidMAX7219_DisplayTestStop(void)
MAX7219_Write(REG_DISPLAY_TEST,0);
*MAX7219_ShutdownStart()
进入shutdown模式
voidMAX7219_ShutdownStart(void)
MAX7219_Write(REG_SHUTDOWN,0);
*MAX7219_ShutdownStop()
退出shutdown模式
voidMAX7219_ShutdownStop(void)
MAX7219_Write(REG_SHUTDOWN,1);
*MAX7219_Init()
*Description:
MAX7219初始化模块;
应该先于其他MAX7219函数而被调用
voidMAX7219_Init(void)
MAX7219_Write(REG_SCAN_LIMIT,1);
//这里设置的是扫描两个数码管
MAX7219_Write(REG_DECODE,0x00);
MAX7219_SetBrightness(INTENSITY_MAX);
//设置最大亮度显示
MAX7219_DisplayTestStart();
MAX7219_DisplayTestStop();
MAX7219_ShutdownStop();
MAX7219_Clear();
*Delay_100us()
延时100us,主要用在消除开关抖动时
voidDelay10ms(void)
unsignedchari,j;
for(i=20;
for(j=248;
j>
j--);
*GetHostStartKey()
取得主持人开始按键的键值
1-->
主持人按键;
0-->
主持人未按键
BoolGetHostStartKey(void)
if(HOST_START==1)
return0;
else
Delay10ms();
//如果发现主持人按键接通,要先延时100us,防止抖动
if(HOST_START==1)
else
return1;
//延时时候还是接通,则判断为该键确实按下
*GetHostCancelKey()
取得主持人取消按键的键值
BoolGetHostCancelKey(void)
if(HOST_CANCEL==1)
*GetCounter
*Descriptio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自定义 Macro