第一集:IO口模式和传统的外部中断
- #include <AI8051U.H>
- #include "set_int.h"
- #include "set_io.h"
- #include "intrins.h"
- void Delay1ms(void) //@40MHz
- {
- unsigned long edata i;
-
- _nop_();
- _nop_();
- _nop_();
- i = 9998UL;
- while (i) i--;
- }
-
- void main(void)
- {
-
- EAXFR=1;
- CKCON=0;
- WTST=0;
-
- set_io_mode(pu_mode,Pin40,Pin00,Pin01,Pin02,Pin03,Pin_End);
- P40=0;
- //set_io_mode(pp_mode,Pin40,Pin00,Pin01,Pin_End);
- set_io_mode(hz_mode,Pin32,Pin33,Pin34,Pin35,Pin_End);
- set_io_mode(en_pur,Pin32,Pin33,Pin34,Pin35,Pin_End);
- //打开内部上拉电阻后,最好加一段1ms延时,以等待端口被拉高
- Delay1ms();//1ms的延时
- //set_io_mode(dis_pur,Pin32,Pin33,Pin_End);
- //set_io_mode(en_pur,Pin33,Pin32,Pin_End);//参数顺序无所谓
- set_int_mode(falling_edge_mode,Int0,Int1,Int_End);
-
- EA=1;
- while(1)
- {
- if(get_int_state(Int0))
- {
- P00=~P00;
- }
- if(get_int_state(Int1))
- {
- P01=~P01;
- }
- P02=P34;
- P03=P35;
- }
- }
复制代码
|