bdhegbhw 发表于 6 天前

第八集
数据传送类指令 对PSW(程序状态字不产生影响),分为数据传送,数据交换,栈操作
传送指令——MOV,主要是内部数据存储器和特殊功能寄存器
格式:MOV <目标字节>,<源字节>
将第二操作数的字节变量传送到第一操作数中,源字节内容不变,一般不影响其他的寄存器和标志

数据交换指令
    1、字节交换指令(将累加器A中内容呢与第二操作数互换)
         XCH    A, addr8      ;(A) <--> (addr8)
         XCH    A, @Ri          ;(A) <--> ( (Ri) )

         XCH    A, Rn            ;(A) <--> (Rn)


    2、半字节交换指令(将累加器A和寄存器间接寻址的内部RAM单元低半字节交换)
         XCHD    A, @Ri      ;(A低四位字节) <--> ( (Ri)低四位字节 )
栈操作指令:
                        PUSH ACC ;保护累加器ACC内容


                        POPPWS ; 恢复标志寄存器内容
Push 和Pop是成对出现的,不能交叉使用

bdhegbhw 发表于 5 天前

第九集:
位操作指令:以位为处理对象,分别完成位传送,位状态控制,位逻辑操作,位条件转移等共有17条
(1)        直接用位地址(2)写成字节地址.位数,如0B8H.0(3)位寄存器的定义名称(4)对于位寻址寄存器,可以使用“P1.0”(5)伪指令事先定义的符号地址,EQU
1.        位数据传送指令 MOV C,bit 注意:其中一个操作数必须位累加器
2.        位状态控制指令 CLR bit,(清零)
3.        CPL bit,(求反)
4.        SETB bit;(置位)
ANL C,bit (逻辑与)
ORL C,bit(逻辑或)

       

bdhegbhw 发表于 5 天前

第十集:
汇编语言程序设计的一般步骤
需求分析与功能定义:明确程序目标(如控制LED闪烁、读取按键等)。
算法设计与流程图绘制:用流程图描述逻辑流程(如顺序、分支、循环结构)。
寄存器与内存分配:规划CPU寄存器(如ACC、R0-R7)和片内RAM地址的使用。
指令选择与优化:根据硬件特性选择高效指令(如 MOV、ADD、CJNE)。
调试与测试:通过仿真工具(如STC-ISP)验证程序逻辑。
汇编程序的基本框架结构
ORG 0000H      ; 程序起始地址(复位入口)
LJMP MAIN      ; 跳转到主程序
ORG 0030H      ; 主程序避开中断向量区
MAIN:
   MOV SP, #5FH; 设置堆栈指针
   MOV P0, #0FFH ; 初始化端口(如P0口置高电平)
   ; 此处编写主循环或功能模块
LOOP:
   NOP
   SJMP LOOP   ; 无限循环维持程序运行
关键组成部分:
ORG 伪指令:定义代码存储起始地址。
初始化段:配置堆栈、I/O端口、定时器等。
主程序循环:通过 SJMP 或 JMP 维持持续执行。
子程序模块:用 CALL 和 RET 实现功能封装。
模块化编程思想
子程序设计规范:
入口参数传递(通过ACC或寄存器)。
现场保护(如 PUSH PSW 保存状态)。
子程序命名清晰(如 DELAY_MS 表示毫秒延时

国学芯用 发表于 5 天前

现在建议,直接从下面这3个最简单的程序开始






【新提醒】还是从 printf_usb("Hello World !\r\n") 开始,《单片机原理及应用》入门@Ai8051U - 51 发烧友,UAC,极致音频,大国工匠,艺术人生,乐林漫步 国芯技术交流网站 - AI32位8051交流社区

bdhegbhw 发表于 5 天前

十一集:C51对ANSI C的扩展

1. Bit型变量:可用于变量类型和函数声明、函数返回值等存储在内部ram的20H~2FH单元,不能声明为指针,也不能有bit数据。
2. 可位寻址区说明:使用sbit声明可独立访问可位寻址对象的位。要求基地址对象的存储器类型位bdata,可位寻址对象的位的声明只能放在main函数外部作为全局变量使用,否则编译会出错。
3.特殊功能寄存器(SFR)
格式:sfr sfr_name = int_constant;
字节寻址:Sfr P0=0x80 //0x80为P0口的地址
   字寻址:sfr16 DPTR = 0x82;      // 指定DPTR的地址DPL=0x82,DPH=0x83
位寻址:sbit bitname=sfr_name^bit_number;
内存区域的指定:
1.        程序存储器:code关键字将变量保存到程序存储区,
例如:unsigned char code led={。。。。。。};
2.        内部ram
Date:直接寻址区 idata:间接寻址区 bdata:可位寻址区
3.        外部数据存储器 xdata:可指定多达64kb的外部直接寻址区,

Keil c51指针:
Volatile关键字 告诉编译器变量可能随时变化,不要进行编译优化
Interrupt关键字中断函数声明
void UART1_ISR(void) interrupt 4
    {
      /* 中断服务程序的代码 */
    }

bdhegbhw 发表于 5 天前

十二集:讲解两段代码,并再次教授仿真步骤

bdhegbhw 发表于 4 天前

十三集:
中断的概念:所谓中断是指计算机在执行其他程序中,出现某种异常事件或者某种请求,CPU暂时停下当前任务,转而去执行对应的服务程序。执行完后,CPU再回到被暂时中止的程序继续执行。请示CPU中断的请求源是中断源,中断响应,整个过程是中断服务,返回到被中断的位置叫中断返回。
中断优先级:每个中断有各自的一个优先级别
中断嵌套:当在执行一个中断时,有更高优先级的请求,会暂时中断本来的中断服务程序,转而执行更高优先级的。
中断的优势:提高工作效率和处理问题的灵活性。
开中断:中断允许;关中断:中断禁止
保护现场和恢复现场:通过堆栈(push pop指令控制寄存器)
堆栈:后进先出规则,即最后进入的数据最先取出。
恢复前,中断请求标志应该撤出(有的可以自动撤出,有的需要指令撤出)
STC8H8K64U共有44个中断源
页: 1 [2]
查看完整版本: 陈老师AI最新8051单片机原理及应用-AI8H8K64U学习记录日志