?? 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 + -