📄 testda.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 + -