找回密码
 立即注册
楼主: YangHY

第一课 序言《AI8051U的特点》

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 21:47:55 | 显示全部楼层
PxIPH,PxIP:Px口中断优先级控制位

00:Px 口中断优先级为0级(最低级)
01:Px 口中断优先级为1级(较低级)
10:Px 口中断优先级为2 级(较高级)
11:Px口中断优先级为3级(最高级)

我们把P3P4的中断写好,比较一下:
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 21:48:34 | 显示全部楼层
P3的级别高:
  1. void P3_IO_Init(void)   //P3端口用作中断初始化
  2. {
  3.         P3IM0 = 0X00; //P3口中断模式为低电平中断
  4.         P3IM1 = 0xFF;
  5.         P3INTE= 0X08; //使能 P3.3 口中断
  6.        
  7.        
  8. }
  9. void P3_IO_ISR(void) interrupt 40    //P3端口中断服务函数
  10. {
  11.         u8 intf;
  12.         intf = P3INTF;
  13.         if(intf)  //判断intf是否为0,为0就是没有触发
  14.         {
  15.                 P3INTF = 0;       
  16.                 if(intf & 0X08)  //判断是否P33按下  01就是P30,02就是P31,04就是P32
  17.                 {
  18.                         passward[0] = 1;
  19.                        
  20. //                        P04 = !P04;
  21. //                        P05 = !P05;
  22. //                        P06 = !P06;
  23. //                        P07 = !P07;
  24.                 }
  25.        
  26.         }
  27. }   
  28. void P4_IO_Init(void)   //P47端口用作中断初始化
  29. {
  30.         P4IM0 = 0X00; //P4口中断模式为低电平中断
  31.         P4IM1 = 0xFF;
  32.         P4INTE= 0X80; //使能 P4.7 口中断,7是最高位对应0X80
  33.        
  34. }
  35. void P4_IO_ISR(void) interrupt 41    //P4端口中断服务函数
  36. {
  37.         u8 intf;
  38.         intf = P4INTF;
  39.         if(intf)  //判断intf是否为0,为0就是没有触发
  40.         {
  41.                 P4INTF = 0;       
  42.                 if(intf & 0X80)  //判断是否P47按下  01就是P40,02就是P41,04就是P42
  43.                 {
  44.                         passward[0] = 2 ;
  45.                        
  46. //                        P04 = !P04;
  47. //                        P05 = !P05;
  48. //                        P06 = !P06;
  49. //                        P07 = !P07;
  50.                 }
  51.        
  52.         }
  53. }   
复制代码


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 21:55:42 | 显示全部楼层
P4肯定对应80

注意判断P47按钮按下:

if(intf & 0X80)  //判断是否P47按下  01就是P40,02就是P41,04就是P42

7是最高位,对应1000  0000 就是80

//数码管显示0:执行while函数 1:执行P3_10中断 2:执行P4_10中断




static TASK_COMPONENTS Task_Comps[]=
{
//状态  计数  周期  函数
       
// {0, 300,   300,   LED0_Blink},      /* task 1 Period: 300ms */
// {0, 600,   600,   LED1_Blink},      /* task 1 Period: 600ms */
// {0, 900,   900,   LED2_Blink},      /* task 1 Period: 600ms */  
       
//    {0, 10,   10,    KEY_Task},      /* task 1 Period: 10ms */  
//        {0, 10,  10,     Task_1},      /* task 1 Period: 矩阵按键 */
        {0,  1,   1,     SEG_Task},      /* task 1 Period: 300ms */       
//        {0, 10,  10,     PW_write_Task},  /* task 1 Period: 密码 */
       
};

只保留数码管显示:
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 21:59:27 | 显示全部楼层
void P3_IO_ISR(void) interrupt 40    //P3端口中断服务函数
{
        u8 intf;
        intf = P3INTF;
        if(intf)  //判断intf是否为0,为0就是没有触发
        {
                P3INTF = 0;       
                if(intf & 0X08)  //判断是否P33按下  01就是P30,02就是P31,04就是P32
                {
                        passward[0] = 1;

P3 用数码管第一位:
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 22:00:02 | 显示全部楼层
P4用数码管第二位:

void P4_IO_ISR(void) interrupt 41    //P4端口中断服务函数
{
        u8 intf;
        intf = P4INTF;
        if(intf)  //判断intf是否为0,为0就是没有触发
        {
                P4INTF = 0;       
                if(intf & 0X80)  //判断是否P47按下  01就是P40,02就是P41,04就是P42
                {
                        passward[0] = 2 ;
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 22:01:54 | 显示全部楼层
主函数用0:

void main(void)
{
        Sys_init();                                                                                //系统初始化
        usb_init();                                     //USB CDC 接口配置

    IE2 |= 0x80;                                    //使能USB中断
        Timer0_Init();                                                                        //定时器初始化
        Init_595();
//        INT1_Init();  //外部中断1(P33按下)中断初始化                                                                        //外部中断1初始化
        P3_IO_Init(); //P3端口用作中断初始化,(P33按下)
//上面这句实际是IO初始化,是所有IO口都能
//用作外部中断的,之所以还用P33,主要是实验板约束       
        P4_IO_Init();
       
        EA = 1;                                                                                        //IE |= 0X80;
       
        P40 = 0;
       
        while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
//        WDT_CONTR = 0X24;
       
        while(1)
        {
               
        if (bUsbOutReady)                                                        //如果接收到了数据
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
                       
            usb_OUT_done();                                                        //
        }
                Task_Pro_Handler_Callback();//执行功能函数
               
                passward[0] = 0;
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 22:04:42 | 显示全部楼层
编译下载后发现确实是有等级的:

截图202601262204408553.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 22:05:34 | 显示全部楼层
按住P33,再按P47 没反应:

截图202601262205334747.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 22:07:06 | 显示全部楼层
倒过来按下P47,再按P33,是可以打断P47区执行P33的:

截图202601262207041722.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2026-03-03 08:35:54
已绑定手机

5

主题

1092

回帖

1374

积分

金牌会员

积分
1374
发表于 2026-1-26 22:08:33 | 显示全部楼层
也可以把P47的优先级调高:

截图202601262208312299.jpg
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-4-6 03:38 , Processed in 0.108499 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表