单片机各种初始化程序-推荐下载
MSP430单片机的DCO初始化

//如果使用XT1或者XT2,需要调用该函数
UCS_setExternalClockSource(UCS_BASE,32768,8000000);
clockValue_SMCLK=UCS_getSMCLK(UCS_BASE);
uint32_tclockValue_ACLK=0;
uint32_tclockValue_MCLK=0;
uint32_tclockValue_SMCLK=0;
voidmain(void)
{
//uint16_tstatus;
//停止看门狗
WDT_A_hold(WDT_A_BASE);
//P4.0保持输出状态
MSP430单片机的DCO初始化
1.平台说明MSP430F5438。
2.ACLK选择XT1,频率为32.768K,MCLK和SMCLK选择DCOCLKDIV,频率为8000K。
//辅助时钟ACLK32.768K
//系统时钟子系统时钟8000K
#include“inc/hw_memmap.h”
#include“ucs.h”
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P7,GPIO_PIN0|GPIO_PIN1);
//启动XT1
UCS_LFXT1Start(UCS_BASE,UCS_XT1_DRIVE0,UCS_XCAP_3);
//DCO参考时钟选择XT1,选择了默认参数
clockValue_MCLK=UCS_getMCLK(UCS_BASE);
clockValue_ACLK=UCS_getACLK(UCS_BASE);
ds1302初始化程序(3)

*返回值:无
***********************************************************************/
void v_Get1302(uchar ucCurtime[])
{
uchar i;
}
T_CLK = 1;
T_RST =0;
}
/********************************************************************
*
*名称: v_Set1302
*说明:
*功能:设置初始时间
*调用: v_W1302()
*输入: pSecDa:初始时间地址。初始时间格式为:秒分时日月星期年
}
/********************************************************************
*
*名称: v_Get1302
*说明:
*功能:读取DS1302当前时间
*调用: uc_R1302()
*输入: ucCurtime:保存当前时间地址。当前时间格式为:秒分时日月星期年
void v_W1302(uchar ucAddr, uchar ucDa)
{
T_RST = 0;
T_CLK = 0;
T_RST = 1;
v_RTInputByte(ucAddr); //地址,命令
v_RTInputByte(ucDa); //写1Byte数据
T_CLK = 1;
T_RST =0;
}
* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
8253、8255A、8259A初始化程序

8253、8255A、8259A初始化程序8253的初始化程序1.确定端口地址:0310H、0312H、0314H、0316H2.确定工作方式(假设工作方式为):通道0,方式3通道1,方式1通道2,方式53.确定计数值:通道0:N0=1MHz/2KHz=500通道1:N1=480us/(1/1mhz)=480通道2:N2=264确定控制字:通道0:00110111B通道1:01110011B通道2:10011011B对3个通道的初始化程序如下:;通道0初始化程序MOV DX, 316HMOV AL,00110111BOUT DX,ALMOV DX,310HMOV AL,00HOUT DX, ALMOV AL,05HOUT DX,AL;通道1的初始化程序MOV DX, 316HMOV AL, 001110011B OUT DX, ALMOV DX, 312HMOV AL, 80HOUT DX, ALMOV AL, 04HOUT DX, AL;通道2初始化程序MOV DX, 316HMOV AL, 10011011B OUT DX, ALMOV DX, 314HMOV AL,26HOUT DX,AL; MOV AL,00H; OUT DX,AL8255A初始化程序对8255A进行初始化,要求端口A工作于方式1,输入;端口B 工作于方式0,输出;端口C的高4位配合端口A工作,低4位为输入。
1.确定控制字端口地址:006CH。
2.确定工作方式:端口A,工作方式1,输入端口B,工作方式0,输出端口C,C0为输入,C4为配合工作3.确定方式选择控制字:1 011 100 1H(B9H)对3个端口的初始化程序如下MOV AL,B9HMOV DX,006CHOUT DX,AL另一个8255A初始化程序已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:1.确定端口地址控制字以及PC口置位复位端口,8BH2.确定工作方式3.确定方式选择控制字MOV AL,80HOUT 8BH,ALMOV AL,ODHOUT 8BH,ALMOV AL,06HOUT 8BH,AL在8259A内部有两组寄存器:一组为命令寄存器,用于存放CPU写入的初始化命令字ICW1~ICW4(initialization command words);另一组为操作命令寄存器,用于存放CPU写入的操作命令字OCW1~OCW3(operation command words)。
几个单片机学习的简单程序

点亮一盏灯#include <REGX51.H>void main(){P0=0;//初始化P0P1=0x80;while(1){P0_4=1;//点亮D0}}闪亮一盏灯#include <REGX51.H>void main(){unsigned int i=0;P0=0;P1=0x0c;//0000 1100P1_2=0;//244使能while(1){P0_4=1;//闪亮D0;1-0-1-0 ……P0_4=0;for(i=100000;i>0;i--);}}循环闪亮#include <REGX51.H>void main(){unsigned int i=0;P0=0;P1=0x0c;//0000 1100P1_2=0;//244使能while(1){P0_4=1;//闪亮D0;1-0-1-0 ……for(i=100000;i>0;i--);P0_4=0;for(i=100000;i>0;i--);P0_5=1;//闪亮D1;1-0-1-0 ……for(i=100000;i>0;i--);P0_5=0;P0_6=1;//闪亮D2;1-0-1-0 ……for(i=100000;i>0;i--);P0_6=0;for(i=100000;i>0;i--);P0_7=1;//闪亮D3;1-0-1-0 ……for(i=100000;i>0;i--);P0_7=0;for(i=100000;i>0;i--);}}循环闪亮#include <REGX51.H>void delay();void main(){P0=0;P1=0x0c;//0000 1100P1_2=0;//244使能while(1){P0_4=1;//闪亮D0;1-0-1-0 ……delay();P0_4=0;delay();P0_5=1;//闪亮D1;1-0-1-0 ……delay();P0_5=0;delay();P0_6=1;//闪亮D2;1-0-1-0 ……delay();P0_6=0;delay();P0_7=1;//闪亮D3;1-0-1-0 ……delay();P0_7=0;delay();}}void delay(){unsigned int i=0;for(i=100000;i>0;i--);}循环闪亮#include <REGX51.H>void delay();void main(){P0=0;P1=0x0c;//0000 1100P1_2=0;//244使能while(1){P0=0x10;//闪亮D0;1-0-1-0 ……delay();P0=0;delay();P0=0x20;//闪亮D1;1-0-1-0 ……delay();P0=0;delay();P0=0x40;//闪亮D2;1-0-1-0 ……delay();P0=0;delay();P0=0x80;//闪亮D3;1-0-1-0 ……delay();P0=0;delay();}}void delay(){unsigned int i=0;for(i=100000;i>0;i--);}循环点亮#include <REGX51.H>void delay();void main(){unsigned char Tab[4]={0x10,0x20,0x40,0x80};P0=0;P1=0x0c;//0000 1100P1_2=0;//244使能while(1){P0=Tab[0];//闪亮D0;1-0-1-0 ……delay();P0=0;delay();P0=Tab[1];//闪亮D1;1-0-1-0 ……delay();P0=0;delay();P0=Tab[2];//闪亮D2;1-0-1-0 ……delay();P0=0;delay();P0=Tab[3];//闪亮D3;1-0-1-0 ……delay();P0=0;delay();}}void delay(){unsigned int i=0;for(i=100000;i>0;i--);}循环点亮#include <REGX51.H>void delay();void main(){unsigned int a=0;unsigned char Tab[4]={0x10,0x20,0x40,0x80};P0=0;P1=0x0c;//0000 1100P1_2=0;//244使能while(1){for(a=0;a<4;a++){P0=Tab[a];//闪亮D0;1-0-1-0 ……delay();P0=0;delay();}}}void delay(){unsigned int i=0;for(i=100000;i>0;i--);}#include <REGX51.H> #include <intrins.h> void delay();void main(){unsigned int a=0;P0=0;P1=0x0c;P1_2=0;while(1){P0=0x10;for(a=0;a<4;a++){delay();P0=_crol_(P0,1);}}}void delay(){unsigned int i=0;for(i=100000;i>0;i--);}数码管点亮5#include <REGX51.H> void delay();void main(){P0=0;P1=0x0c;P0=0x6d;P1_0=1;delay();P1_0=0;delay();P0=0xfe;P1_1=1;delay();P1_1=0;delay();}void delay(){unsigned int i=0;for(i=100000;i>0;i--);}学号#include <REGX51.H> void delay();void main(){P0=0;P1=0x0c; P0=0x3f; P1_0=1; P1_0=0; P0=0x7f; P1_1=1; P1_1=0; delay();P0=0x6f; P1_0=1; P1_0=0; P0=0xbf; P1_1=1; P1_1=0; delay();P0=0x5b; P1_0=1; P1_0=0; P0=0xdf; P1_1=1; P1_1=0;delay(); P0=0x06; P1_0=1; P1_0=0; P0=0xef; P1_1=1; P1_1=0; delay(); P0=0x3f; P1_0=1; P1_0=0; P0=0xf7; P1_1=1; P1_1=0; delay(); P0=0x7d; P1_0=1; P1_0=0; P0=0xfb; P1_1=1; P1_1=0; delay();P0=0x07;P1_0=1;P1_0=0;P0=0xfd;P1_1=1;P1_1=0;delay();P0=0x5b;P1_0=1;P1_0=0;P0=0xfe;P1_1=1;P1_1=0;delay();}void delay(){unsigned int i=0;for(i=100000;i>0;i--);}#include <REGX51.H>void delay();void main(){unsigned int a=0;unsigned char seg[]={0x3f,0x6f,0x5b,0x06,0x3f,0x7d,0x07,0x5b};unsigned char dig[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};for(a=0;a<8;a++){P0=0;P1=0x0c;P0=seg[a];P1_0=1;P1_0=0;P0=dig[a];P1_1=1;P1_1=0;delay();}}void delay(){unsigned int i=0;for(i=1000000000;i>0;i--);}开关K0控制灯#include <REGX51.H>#define uint unsigned int#define uchar unsigned char sbit Key_ce=P1^3;sbit Dig_ce=P1^1;sbit Led_ce=P1^2;void main(){bit Stat=0;P0=0;P1=0x0c;Led_ce=0;while(1){P0_4=Stat;P0=0x0e;Dig_ce=1;Dig_ce=0;Key_ce=0;if(P0_0==0){Stat=~Stat;}Key_ce=1;}}开关K0控制灯#include <REGX51.H>#define uint unsigned int#define uchar unsigned char sbit Key_ce=P1^3;sbit Dig_ce=P1^1;sbit Led_ce=P1^2;void delayms(uint);void main(){bit Stat=0;P0=0;P1=0x0c;Led_ce=0; while(1){P0_4=Stat;P0=0x0e;Dig_ce=1;Dig_ce=0;Key_ce=0;if(P0_0==0){delayms(10);if(P0_0==0){Stat=~Stat;}}Key_ce=1;}}void delayms(uint i){uint j;for(i;i>0;i--)for(j=10;j>0;j--);}#include <REGX51.H>#define uint unsigned int#define uchar unsigned charsbit Key_ce=P1^3;sbit Dig_ce=P1^1;sbit Seg_ce=P1^0;uchar code seg1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c ,0x39,0x5e,0x79,0x71};void delayms(uint);void Keyscan();void main(){P0=0;P1=0x0c;while(1){Keyscan();}}void delayms(uint i){uint j;for(i;i>0;i--)for(j=10;j>0;j--);}void Keyscan(){unsigned char Temp1,Temp2,Keynum; P0=0;Seg_ce=1;Seg_ce=0;P0=0xfe;Dig_ce=1;Dig_ce=0;Key_ce=0;Temp1=P0;Temp1=Temp1&0x0f;if(Temp1!=0x0f){delayms(10);Temp2=P0;Temp2=Temp2&0x0f;if(Temp1==Temp2){switch(Temp2){case 0x0e:Keynum=0;break;case 0x0d:Keynum=1;break;case 0x0b:Keynum=2;break;case 0x07:Keynum=3;break;default:break;}while(Temp2!=0x0f){Temp2=P0;Temp2=Temp2&0x0f;}}}Key_ce=1;P0=seg1[Keynum];Seg_ce=1;Seg_ce=0;P0=0xfe;Dig_ce=1;Dig_ce=0;delayms(1);P0=0;Seg_ce=1;Seg_ce=0;P0=0;P0=0xfd;Dig_ce=1;Dig_ce=0;Key_ce=0;Temp1=P0;Temp1=Temp1&0x0f;if(Temp1!=0x0f){delayms(10);Temp2=P0;Temp2=Temp2&0x0f;if(Temp1==Temp2){switch(Temp2){case 0x0e:Keynum=4;break;case 0x0d:Keynum=5;break;case 0x0b:Keynum=6;break;case 0x07:Keynum=7;break;default:break;}while(Temp2!=0x0f){Temp2=P0;Temp2=Temp2&0x0f;}}}Key_ce=1;P0=seg1[Keynum]; Seg_ce=1;Seg_ce=0;P0=0xfd;Dig_ce=1;Dig_ce=0; delayms(1);P0=0;Seg_ce=1;Seg_ce=0;P0=0;P0=0xfb;Dig_ce=1;Dig_ce=0;Key_ce=0;Temp1=P0;Temp1=Temp1&0x0f;if(Temp1!=0x0f){delayms(10);Temp2=P0;Temp2=Temp2&0x0f;if(Temp1==Temp2){switch(Temp2){case 0x0e:Keynum=8;break;case 0x0d:Keynum=9;break;case 0x0b:Keynum=10;break;case 0x07:Keynum=11;break;default:break;}while(Temp2!=0x0f){Temp2=P0;Temp2=Temp2&0x0f;}}Key_ce=1;P0=seg1[Keynum]; Seg_ce=1;Seg_ce=0;P0=0xfb;Dig_ce=1;Dig_ce=0; delayms(1);P0=0;Seg_ce=1;Seg_ce=0;P0=0;P0=0xf7;Dig_ce=1;Dig_ce=0;Key_ce=0;Temp1=P0;Temp1=Temp1&0x0f; if(Temp1!=0x0f)delayms(10);Temp2=P0;Temp2=Temp2&0x0f;if(Temp1==Temp2){switch(Temp2){case 0x0e:Keynum=12;break;case 0x0d:Keynum=13;break;case 0x0b:Keynum=14;break;case 0x07:Keynum=15;break;default:break;}while(Temp2!=0x0f){Temp2=P0;Temp2=Temp2&0x0f;}}}Key_ce=1;P0=seg1[Keynum];Seg_ce=1;Seg_ce=0;P0=0xf7;Dig_ce=1;Dig_ce=0;delayms(1);}#include <REGX51.H>void delay();void main(){unsigned int a=0;unsigned char seg[]={0x3f,0x6f,0x5b,0x06,0x3f,0x7d,0x07,0x5b};unsigned char dig[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};for(a=0;a<8;a++){P0=0;P1=0x0c;P0=seg[a];P1_0=1;P1_0=0;P0=dig[a];P1_1=1;P1_1=0;delay();}}void delay(){unsigned int i=0;for(i=1000000000;i>0;i--);}开关K0控制灯#include <REGX51.H>#define uchar unsigned char sbit Key_ce=P1^3;sbit Dig_ce=P1^1;sbit Led_ce=P1^2;void main(){bit Stat=0;P0=0;P1=0x0c;Led_ce=0;while(1){P0_4=Stat;P0=0x0e;Dig_ce=1;Dig_ce=0;Key_ce=0;if(P0_0==0){Stat=~Stat;}Key_ce=1;}}中断1.1#include <REGX51.H>void main(){bit Stat=1;P0=0;P1=0x0c;P1_2=0;TH0=0x8a;TL0=0xd0;while(1){P0_4=Stat;TMOD=0x01;TR0=1;if(TF0==1){TF0=0;Stat=~Stat;TH0=0x8a;TL0=0xd0;}}}中断1.2#include <REGX51.H> sbit Stat = P0^4;void main(){P0=0;P1=0x0c;P1_2=0;TH0=0xa8;TL0=0xd0;TMOD=0x01;Stat = 0;IE=0x82;//EA=1;ET0=1TR0=1;while(1){;}}void T0_time() interrupt 1 {TH0=0xa8;TL0=0xd0;Stat=~Stat;}中断2.1#include <REGX51.H> sbit Stat=P0^4;unsigned char a;void main(){P0=0;P1=0x0c;P1_2=0;TH0=0xa8;TL0=0xd0;TMOD=0x01;IE=0x82;//EA=1;ET0=1TR0=1;Stat=0;while(1){if(a == 10){Stat = ~Stat;a = 0;}}}void T0_time() interrupt 1 {a++;TH0=0xa8;TL0=0xd0;}中断2.2#include <REGX51.H>sbit Stat=P0^4;unsigned char a;void main(){P0=0;P1=0x0c;P1_2=0;TH0=(65536-30000)/256;TL0=(65536-30000)%256; TMOD=0x01;IE=0x82;//EA=1;ET0=1TR0=1;Stat=0;while(1){if(a == 10){Stat = ~Stat;a = 0;}}}void T0_time() interrupt 1{a++;TH0=(65536-30000)/256; TL0=(65536-30000)%256; }中断仿真5.3U1#include <REGX51.H> unsigned char i,flag;void delayms(unsigned int x) {unsigned int i,j;for(i=x;i>0;i--)for(j=124;j>0;j--);}void main(){i=0;flag=0;TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;IE=0x82;//EA=1;ET0=1while(1){if(P1_7==0){delayms(10);if(P1_7==0){TR0=1;}}if(flag==1&&i!=100){flag=0;P1_4=~P1_4;}if(i==100){TR0=0;i=0;}}}void T0_time() interrupt 1TH0=(65536-10000)/256;TL0=(65536-10000)%256;i++;flag=1;}中断仿真5.3U2#include <REGX51.H>void main(){TMOD=0x05;TH0=0;TL0=0;TR0=1;while(1){P1=TL0;}。
51单片机程序编写及下载

51单片机程序编写及下载
1,硬件准备
(1)将单片机小系统供电,一般为5V供电
(2)将并口下载线一端连接到电脑机箱后面的并口插槽,一端连接到单片机小系统板的下载口
2,编写程序
(1)打开keil c开发环境
(2)选择project—new project,新创建一个工程,并保存在相应目录下
(3)选择芯片类型,我们这里使用的是at89s52 (4)添加汇编启动代码,点击YES
(5)此时,程序已包含startup.a51的汇编启动代码,主要完成单片机各个寄存器的定义(6)创建c语言程序,点击file—new
(7)编写代码
(8)编写好的文件保存
(9)添加文件到工程(10)选择编写好的文件
(11)此时,在工程文件中,我们可以看到两个文件startup.a51汇编程序和test2.c的c程序(12)选择project—opinions for file test2.c
(13)选择output选项卡
(14)将create hex file 选项选中
(15)将文件编译连接
(16)如果文件没有错误,可以在相应文件夹中看到以下文件
3,下载程序
(1)打开ISPlay.exe应用程序
(2)点击检测器件
(3)点击擦除
(4)点击文件,选择.hex文件
(5)此时,可看到二进制代码
(6)点击autorun,将程序写入单片机。
单片机技术应用 通用定时器初始化代码

通用定时器初始化代码//通用定时器3中断初始化//这里时钟选择为APB1的2倍,而APB1为36M//arr:自动重装值。
//psc:时钟预分频数//这里使用的是定时器3!void TIM3_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能//定时器TIM3初始化TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = T ck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断//中断优先级NVIC设置NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器TIM_Cmd(TIM3, ENABLE); //使能TIMx}。
单片机串口初始化程序

单片机串口初始化程序1.引言1.1 概述概述:单片机串口(Universal Asynchronous Receiver/Transmitter,简称UART)是一种常见的通信接口,可以通过串口与其他设备进行数据的传输和通信。
在单片机系统中,串口的初始化是非常重要的步骤,它不仅决定了串口通信的可靠性和稳定性,还影响了单片机整体系统的性能和功能。
本文将详细介绍单片机串口初始化的程序,包括串口的基本概念、串口初始化的重要性以及实现串口初始化的方法。
通过阅读本文,读者将了解到串口初始化的必要性,了解如何在单片机系统中进行串口初始化,从而为后续的串口通信提供完善的基础。
在正式进行串口初始化之前,我们需要先了解串口的基本原理和工作原理。
串口是一种异步的通信接口,它使用起停位、数据位、校验位和波特率等参数来进行通信。
单片机通过串口与外部设备进行数据的传输和接收,可以实现与计算机、传感器、LCD显示屏等设备的数据交互。
串口初始化的重要性不容忽视。
在单片机系统中,串口通常用于与其他设备进行数据的传输和通信。
如果串口初始化不正确或不完善,可能会导致数据传输错误、通信失败甚至系统崩溃。
因此,正确地初始化串口成为了保证系统正常运行和稳定通信的关键步骤。
针对串口初始化,本文将介绍一种常用的实现方法。
这种方法需要设置串口的参数,包括波特率、数据位、校验位和停止位等。
同时,还需要配置单片机的引脚和时钟等相关参数,使其能够正确地与外部设备进行串口通信。
本文将通过代码实例的方式,详细介绍串口初始化的具体步骤和方法,供读者参考和借鉴。
总之,本文将全面介绍单片机串口初始化的程序。
通过此文,读者将深入了解串口的基本概念和工作原理,认识到串口初始化的重要性,并学习到一种常用的串口初始化实现方法。
希望本文能为读者提供有益的知识和帮助,为单片机系统的开发和应用提供参考和指导。
1.2文章结构1.2 文章结构本文旨在介绍单片机串口初始化程序的相关知识和实现方法。
51单片机各中断初始化及子程序模板

51单片机各中断初始化及子程序模板/************************************************************ *51单片机各中断初始化及子程序模板,几乎包括了传统51单片机的全部中断*1、外部中断0*2、定时器中断0*3、外部中断1*4、定时器中断1*5、串行中断*6、定时器中断2---本中断在52时才有*以上所有中断已经在Keil软件环境上经过测试,工作正常*在使用定时中断的时候需要根据实际需要重设定时器的初值和工作方式*在串行通讯中,使用11.0592M晶振,通讯波特率为9600bps*为了保证文件的单一和方便保存,本项目只用了一个文件,没有进行模块化处理,在实际应用中不建议这样做*本程序在UE11.00b下编辑,在KeilV3.23(C8.01)下编译调试*本程序仅供初学者参考使用,细节问题未涉及,在实际项目中请谨慎使用*Author:大灵通*昌宁科技,欢迎您提出宝贵意见!*2006-12-7 15:05,OK!*************************************************************/#include<reg52.h>//如果是使用51单片机,则应该是reg51.h,//且不能使用定时器2#include<intrins.h>//以下两个包含文件在本代码中实际不需要,#include<absacc.h>//但经常用到,所以列出#define uchar unsigned char#define uint unsigned int#define TimeDelay 2//程序所用变量声明bit Time0Int;bit Int0Flag,Int1Flag;uchar Time0Count,Time1Count,Time2Count;uchar ReceiveData;//程序所用函数声明void McuInitial(void);void InitialTime0(void);void InitialTime1(void);void InitialTime2(void);void IntialSerialComm(void);void SerialSend(uchar SendData);void delay(uint n);/************************************************************ *Function: 主函数*parameter:*Return:*Modify:*************************************************************/ void main(void){uchar i;McuInitial();delay(TimeDelay);while(1){if(Int0Flag==1)//各中断的具体处理{Int0Flag = 0;}if(Int1Flag==1){Int1Flag = 0;}if(Time0Count==5){Time0Count = 0;}if(Time1Count==5){Time1Count = 0;}if(Time2Count==5){Time2Count = 0;}SerialSend(i);i++;if(i>=0xff)i=0;}}/*************************************************************Function: 单片机初始化处理*parameter:*Return:*Modify:*************************************************************/ void McuInitial(void){//外部中断0初始化IT0 = 1;EX0 = 1;//外部中断1初始化IT1 = 1;EX1 = 1;InitialTime0();//定时器0初始化// InitialTime1();//定时器1初始化InitialTime2();//定时器2初始化IntialSerialComm();//串行中断初始化,占用定时器1,//如果用串行中断,定时器1不能用于定时EA = 1;//打开中断}/************************************************************ *Function: 定时器1初始化*parameter:*Return:*Modify:*************************************************************/ void InitialTime0 (void){TMOD |= 0x01;//16位定时器TH0 = 0x06;//8msTL0 = 0xed;ET0 = 1;//使能中断TR0 = 1;//打开定时器}/************************************************************ *Function: 定时器1初始化*parameter:*Return:*Modify:*************************************************************/void InitialTime1 (void){TMOD |= 0x10;//16位定时器TH1 = 0x06;//8msTL1 = 0xed;ET1 = 1;//使能中断TR1 = 1;//打开定时器}/************************************************************ *Function: 定时器2初始化,本中断仅在52时才有*parameter:*Return:*Modify:*************************************************************/ void InitialTime2 (void){T2CON=0x04;RCAP2H=0x04;RCAP2L=0x00;ET2 = 1;}/************************************************************ *Function: 串行中断初始化*parameter:*Return:*Modify:*************************************************************/ void IntialSerialComm(void){TMOD |= 0x20;SCON=0xf0;TH1=0xfd;//fdTL1=0xfd;//fdTR1=1;ES=1;}/************************************************************ *Function: 外部中断0中断服务子程序*parameter:*Return:*Modify:*************************************************************/ void Interrupt0 (void) interrupt 0Int0Flag = 1;}/************************************************************ *Function: 外部中断1中断服务子程序*parameter:*Return:*Modify:*************************************************************/ void Interrupt1 (void) interrupt 2{Int1Flag = 1;}/************************************************************ *Function: 定时器0中断服务子程序*parameter:*Return:*Modify:*************************************************************/ void InterruptTime0(void) interrupt 1{TH0 = 0x06;//8msTL0 = 0xed;Time0Count++;}/************************************************************ *Function: 定时器1中断服务子程序*parameter:*Return:*Modify:*************************************************************/ void InterruptTime1(void) interrupt 3{TH1 = 0x06;//8msTL1 = 0xed;Time1Count++;}/************************************************************ *Function: 定时器2中断服务子程序*parameter:*Return:*Modify:*************************************************************/ void InterruptTime2(void) interrupt 5TF2=0;Time2Count++;}/************************************************************ *Function: 串行接收中断服务子程序*parameter:*Return:*Modify:*************************************************************/ void InterruptSerialComm(void) interrupt 4{if(RI){RI = 0;ReceiveData = SBUF;}}/************************************************************ *Function: 串行发送程序*parameter:*Return:*Modify:*************************************************************/ void SerialSend(uchar SendData){SBUF = SendData;while(TI==0);TI = 0;}/************************************************************ *Function: 延时*parameter:*Return:*Modify:*************************************************************/ void delay(uint n){while(n!=0){n--;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置2试时32卷,3各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并25工且52作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
void Timer0_ISR(void) interrupt 1//T0 溢出进入中断服务程序
{
}
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
void timer1interrupt() interrupt 3 //定时器 1 中断
{
}
unsigned long total=0; //循环变量
unsigned int c=0;// 计算转换采样值后得到的输出电压
sfr16 DAC0=0xD2;
sfr16 ADC0=0XBE ;
#define ref 2.434
void DelayMs(unsigned int i) //延时 MS
{
}
unsigned int j;
for(;i>0;i--)
unsigned int num3=0;
unsigned int num4=0;//输出电压十位、个位和小数位
unsigned int num5=0;
unsigned int num6=0;
unsigned int num7=0;
unsigned int num8=0;//输出电流百位、十位和个位
unsigned int num9=0;
void SystemInit()
{
}
for(j=1000;j>0;j--) ;
//禁止看门狗
EA=0;
WDTCN=0xDE;
WDTCN=0xAD;
EA=1;
void SYSCLK_Init()
{
int i;
OSCXCN=0X77 ;
for(i=0;i<256;i++);
//看门狗配置
//模式
//配置系统时钟为 12Mhz
{
}
EIE2=0x20; //外部中断 7 中断允许
P3IF = 0x00; //下降沿触发,软件清零
EA=1; //中断总开关
void T0_A/Dgengxin_1ms_init(void) //T0 初始化
{
}
{
}
CKCON&=0xf7; // T0M=0,12 分频
TMOD=0x10;
TH0=(65536-1000)/256;
unsigned int num10=0;
unsigned int key_flag=0;
double sum=0;
unsigned int sam_v=0; //扩单 10 倍输出电压
unsigned int sam_c=0; //以 mA 为;
unsigned int b=0;
TL0=(65536-1000)%256;
void T1_ZLGxianshi_500ms_init(void)
CKCON&=0xef; //T1M=0,12 分频
TMOD=0x01; //T1 方式一
TH1=(65536-50000)/256;
//T0 方式一 16 位定时/计数器
TL1=(65536-50000)%256; //定义初值
TH1=65536-50000/256;
TL1=65536-50000%256;
total++;
while(total==10) //循环 10 次计时 500ms
{
}
total = 0;
//定义初值
//计数器重装
//T1 初始化
#include"ZLG7289.h"
unsigned long num=0;
unsigned char Key_num=0; //键值
unsigned char mode=0;
unsigned int key=0xff;
unsigned int num1=0;//设定电压十位、个位和小数位
unsigned int num2=6;
while (!(OSCXCN&0x80));//外部晶振起振且运行稳定
OSCICN=0x88;
}
void PORT_Init()
{ XBR0=0x04; //交叉开关不分配其他设备
}
XBR1=0x00;
XBR2=0x40; //使能交叉开关
void InterruptInit() //中断 7 初始化