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

📄 testda.c

📁 dac0832接口程序
💻 C
字号:
# include < reg52.h >
# include < stido.h >
# include < absacc.h >
# include < stdlib.h >
# define TRUE 1
# define FALSE 0
# define DELAY_VALUE 3

sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;

sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;

sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;

sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;

unsigned char mark_0=0;   //中断判别
bit mark_1=0;
bit mark_2=0;

void initial();
void keyscan();
void AD_scan();
void DA_scan();

//中断
void int_0();	//int0中断
void int_1();
void timer_0();	  //定时器0中断
void timer_1();
 

void main(void)
{
	initial();
	//选通
	 P3_5=1;
	 P2_7=1;
	 P2_6=1;
	 P2_5=0;
	//读写信号
	 P3_6=0;
	 P3_7=0;
	while(1)
	{
		P0=0x01;   //移位正确否???
		P0=P0>>1;
	}


}
void initial()
{
//串行口寄存器设置///////////////////////////////////
   //SCON	
	SM0=0;	 
	SM1=1;		//	工作模式: 1  ;10步异步收发,每一帧10位。
	SM2=1;     //????模式一中,若sm2=1,则只有接收到有效停止位时,RI才置1
	REN=1;     //为一时,串口允许接收数据,由软件置位或清零
	TB8=0;     //工作于方式2、3时
    RB8=0;     //同上
	TI=0;      //发送和接收完一帧数据后,由硬件使TI/RI置位申请中断,须由软件清零
	RI=0;           //TI\RI发送和接收中断标志位

	//SCON=0x70;			
//电源控制寄存器PCON中 只有SMOD与串口有关,SMOD=1,波特率加倍,否则不加倍
	PCON=0;    //SMOD=1; 11M晶振
////////////////////////////////////////////////////////////////////////////////////

//中断系统/////////////////////////////////////////////
     //TCON定时器控制寄存器
	 TF1=0;	//定时器T1和T0 溢出标志位
	 //空
	 TF0=0;
	 //空
	 IE1=0; 
	 IT1=1;
	 IE0=0; //外部中断int0和Int1请求中断标志位   当为1 时,请求中断
	 IT0=1; //外部中断0、1为边沿触发												
	 //TCON=0X05;//定义外部中断int0和int1的触发方式为 边沿触发  剩余两位无关
	 //SCON最后两位与中断有关  见串口寄存器SCON的设置
	 //IE中断允许寄存器
	 EA=1;  //不屏蔽所有中断
	 //空
	 ET2=0;
	 ES=0;  //允许串行口中断
	 ET1=0; //允许定时/计数器中断 
	 EX1=1;  //允许外部中断int1
	 ET0=0;
	 EX0=1;  //允许外部中断int0
	 //IE=0X81;
	 //IP中断优先级寄存器
	 //空	 
	 //空
	 PT2=0; //定时器T2 为1时,则是高优先级
	 PS=1;	//串口
	 PT1=0;
	 PX1=0; //外部中断
	 PT0=0;
	 PX0=0;
	 //IP=0x01;
//////////////////////////////////////////////////////////////////////////////////
//定时/计数器的设置///////////////////////////////
   //工作方式寄存器TMOD的设置,高四位用于定时器1,低四位用于定时器0
   TMOD=0x01;
   //控制寄存器TCON参见中断系统

	//定时器 的四种工作模式	   初值设定???????


}
//延时子函数////////////////////////////////////////////////
void delay(DEFINE_VALUE)
{	
	unsigned char i,j;
	for(i=0;i<20;i++)
	for(j=0;j<250;j++);
}
////////////////////////////////////////////////////////////////////////////////////


void int_0() interrupt 0 using 0	//int0中断	  含义?????
{
//此处为键盘的中断,读P1口
 mark_0=1;
}
void int_1() interrupt 2 using 1	//int1中断	  含义?????
{
 mark_0=2;
}
void timer_0() interrupt 1 using 2	  //定时器0中断
{
 mark_0=3;
}
void timer_1() interrupt 3 using 3
{
 mark_0=4;
}


////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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