- 打卡等级:偶尔看看I
- 打卡总天数:13
- 最近打卡:2025-04-27 09:58:37
版主
- 积分
- 367
|
发表于 2025-1-24 15:06:00
|
显示全部楼层
第十四集IO中断,已手敲代码测试成功
任务一:IO中断程序,LED灯亮灭
#include "io.h"
void P3_IO_Init(void)
{ P3IM0=0X00;
P3IM1=0X00;
P3INTE=0X08;
}
void P3_IO_ISR(void) interrupt 40
{ u8 intf;
intf=P3INTF;
if(intf)
{
P3INTF=0;
if(intf&0x08)
{
P01=!P01;
}
}
P01=!P01;
}
学习视频:
任务二:P33口显示数字1,P47显示数字2
#include "config.h"
#include "task.h"
#include "io.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
void Delay3000ms(void) //@24.000MHz
{
unsigned long edata i;
_nop_();
_nop_();
i = 17999998UL;
while (i) i--;
}
void main(void)
{
Sys_init(); //系统初始化
usb_init(); //USB CDC 接口配置
IE2 |= 0x80;
Timer0_Init();
Init_595();
//INT1_Init();
P3_IO_Init();
P4_IO_Init();
EA = 1;
P40 = 0;
while (DeviceState!=DEVSTATE_CONFIGURED);
while(1)
{
if (bUsbOutReady)
{
//USB_SendData(UsbOutBuffer,OutNumber);
usb_OUT_done();
}
Task_Pro_Handler_Callback(); //执行功能函数
passward[0]=0;
}
}
void Timer0_Isr(void) interrupt 1 //1毫秒执行一次
{
Task_Marks_Handler_Callback (); //系统计时
}
学习视频:
任务三:实现P33,P47口的I0中断 ,P47口中断优先P33口中断
#include "io.h"
void P3_IO_Init(void)
{ P3IM0=0X00;
P3IM1=0Xff;
P3INTE=0X08;
}
void P3_IO_ISR(void) interrupt 40
{ u8 intf;
intf=P3INTF;
if(intf)
{
P3INTF=0;
if(intf&0x08)
{
passward[0]=1;
}
}
}
void P4_IO_Init(void)
{ P4IM0=0X00;
P4IM1=0Xff;
P4INTE=0X80;
PINIPH |=(1<<4);
PINIPL |=(1<<4);
}
void P4_IO_ISR(void) interrupt 41
{ u8 intf;
intf=P4INTF;
if(intf)
{
P4INTF=0;
if(intf&0x80)
{
passward[0]=2;
}
}
}
学习视频:
14.IO中断.zip
(161.28 KB, 下载次数: 7)
|
|