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

有关DMA,山东大学陈桂友教授

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 22:39:50 | 显示全部楼层
接上页:
截图202601212239484893.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 22:41:21 | 显示全部楼层
串口2 的例子:

截图202601212241189304.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 22:46:50 | 显示全部楼层
对应的电路图“
截图202601212246488158.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 22:48:54 | 显示全部楼层
陈老师特别细致的讲了线路连接:

截图202601212248525737.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 22:51:12 | 显示全部楼层
接着陈老师解释C语言程序:

截图202601212251104810.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 22:56:58 | 显示全部楼层
P_SW2 |=1;  //UART2 switch to: 0: P1.0 P1.1, 1: P4.6 P4.7

要和电路图中的P46P47对应!

下面是初始化和中断服务函数:

截图202601212256569213.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 23:02:34 | 显示全部楼层
这里

S2CON & 1 就是S2RI

S2CON &2 就是S2TI

接着介绍仿真调试


截图202601212258077353.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 23:03:23 | 显示全部楼层
把试验箱做成仿真器:

截图202601212303203585.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-21 23:09:51 | 显示全部楼层
仿真其实要自己动手搞一次,光看是没用的

下节课我们学:

那么第十九集就到此结束

截图202601212310435226.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:153
  • 最近打卡:2026-03-30 19:54:03
已绑定手机

22

主题

2426

回帖

3422

积分

论坛元老

积分
3422
发表于 2026-1-22 21:01:09 | 显示全部楼层
我们改写一下上节课串口2 的程序:

#include <AI8051U.H>

unsigned char teststr[]={"STC8H Uart2 Test!\r\n"};

unsigned char str_index; //定义索引变量
void Uart2_Init(void);        //115200bps@22.1184MHz

void main(void)       //主程序,在C语言的主程序中可以不设置堆栈指针
{

        WTST = 0;                                                                                  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1;                                                                                 //扩展寄存器(XFR)访问使能
    CKCON = 0;                                                                                 //提高访问XRAM速度
       
    P4M0 |= 0x24; P4M1 |= 0x24;    //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
    P4M0 |= 0x00; P4M1 |= 0x00;

    P4PU = 0x00;                                 //打开内部上拉电阻

       
        SCON=0x50;        //8位数据,可变波特率
        AUXR &= 0xFE;     //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;     //设定定时器1为16位自动重装方式

        Uart2_Init();        //115200bps@22.1184MHz
        //P_SW2 |= 1;       //UART2 switch to: 0: P1.0 P1.1, 1: P4.6 P4.7
        //Ai8051U试验箱是P4.2 RXD2_2 P4.3 TXD2_2,利用J18A J18B
        P_SW2 |= 1;       //UART2 switch to: 0: P1.2 P1.3, 1: P4.2 P4.3
       
        IE2 |= 0x01;       //允许UART2中断
        EA=1;             //开中断
       
        str_index = 0;
    S2BUF=teststr[str_index];
       
       
               
        while(1);         //等待中断
}

void Uart2_Isr(void) interrupt UART2_VECTOR
{
       
        if (S2CON & 0x01  != 0)        //检测串口2接收中断
        {
                S2CON &= ~0x01;        //清除串口2接收中断请求位
        }
        if (S2CON & 0x02 !=0)        //检测串口2发送中断
        {
                S2CON &= ~0x02;           //清除串口2发送中断请求位
                str_index++;
                if(teststr[str_index]=0)
                        IE2^=0xfe;     //关串口2中断
                else
                        S2BUF=teststr[str_index];

        }
}

void Uart2_Init(void)        //115200bps@22.1184MHz
{
        S2CON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xFB;                //定时器时钟12T模式
        T2L = 0xFC;                        //设置定时初始值
        T2H = 0xFF;                        //设置定时初始值
        AUXR |= 0x10;                //定时器2开始计时
        IE2 |= 0x01;                //使能串口2中断
}



回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-1 04:00 , Processed in 0.117356 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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