亚洲国际广西快3官方网: w5500中断处理程序中的问题

开心8网址官网官方网
238|5
楼主
本帖最后由 hszhzwd 于 2020-6-17 19:54 编辑

*******************************************************************************
* 描述    : W5500中断处理程序框架
*******************************************************************************
void W5500_Interrupt_Process(void)
{
        unsigned char i,j;

IntDispose:

        i=Read_W5500_1Byte(SIR);//读取端口中断标志寄存器        
        if((i & S0_INT) == S0_INT)//Socket0事件处理
        {
                j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器
                Write_W5500_SOCK_1Byte(0,Sn_IR,j);
                if(j&IR_CON)//在TCP模式下,Socket0成功连接
                {
                        S0_State|=S_CONN;//网络连接状态0x02,端口完成连接,亚洲国际广西快3官方网:可以正常传输数据
                }
                .
                .
                .
        }
        if(Read_W5500_1Byte(SIR) != 0)
                goto IntDispose;
}
上面程序中:
j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器
随后又将j写入Sn_IR(Write_W5500_SOCK_1Byte(0,Sn_IR,j);)
不理解其中的含义,请高手指教!


沙发
 楼主 | 2020-6-18 11:14 | 只看该作者
请高手指教,我都想破脑袋了,不知是啥意思。

评论

科技猎人 2020-6-19 09:37 回复TA
对于ir寄存器的各个位,是写1清0的,数据手册有明确说明。 你也可以读取后,写0xff,也肯定是全部清0。 
板凳
 楼主 | 2020-6-19 10:08 | 只看该作者
j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器
Write_W5500_SOCK_1Byte(0, ,j);//将j写回Sn_IR,相当于主机将Sn_IR中为1的位,再置1,结果是该位被清零。清除该中断。之后的程序是对该中断的处理。这样理解对吗?

评论

zlf1208 2020-6-19 10:33 回复TA
有的单片机的标志寄存器是写1清0的,你可以查阅单片机的相关技术文档。 
地板
 楼主 | 2020-6-19 11:15 | 只看该作者
谢谢!!
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

亚洲国际广西快3官方网: 热门推荐

开心8网址官网官方网 永利游戏开户直营 返回顶部 返回列表
开心8网址官网官方网 开心8网址官网官方网 利发欧洲厅 118论坛118图库 中彩网手机下载
巴黎人DS太阳城时时彩开奖记录 女神国际上海时时乐官网 金冠鱼虾蟹骰宝开奖记录 汇丰SUNBET申博开奖 千亿鱼虾蟹骰宝开奖时刻表
澳门永利娱乐场官网 皇家VR快艇助赢软件 澳门凯旋门娱乐 金马国际大小骰宝时时彩开奖记录 重庆时时彩白菜论坛登入
新葡京官方直营网站 申博太阳 太阳城百家乐登入 申博正网游戏登入 奥斯卡天津快乐十分官方网