2. 外部数据存储器(或扩展并联I/0口)与累加器A传送指令MOVX (寄存器间接寻址)3. 程序存储器向累加器A传送指令MOVC
4. 数据交换指令
5. 栈操作指令
注意:
二、逻辑操作类指令
三、算数运算类指令
听陈教授第九课笔记:
一、位操作指令
1. 位数据传送指令
2. 位状态控制指令
(2)位求反指令
(3)位置位指令
3.位逻辑操作指令(1)位逻辑“与”指令
(2)位逻辑“或”指令
4.位条件转移指令(1)判进位标志C转移指令
(2)判直接寻址位转移指令
二、控制转移类指令分两种:为程序转移类指令和子程序调用和转移指令。
1.程序转移指令1)长转移指令2)绝对转移指令
3)相对短转移指令
2.条件转移指令1)累加器判0转移指令
2)比较转移指令
有4条:
3)循环指令
2.子程序调用和返回指令1)长调用指令LCALL2)绝对调用指令ACALL3)返回指令RET4)中断返回指令RETI5)空操作指令NOP
听陈教授第十课小记:
汇编语言程序设计的一般步骤和框架1.汇编语言程序设计的一般步骤
2.汇编语言的框架
具体中断信息见stc8h说明书中断部分3.典型汇编语言程序设计举例 具体设计略
听陈教授第十一课笔记一、C51对ANSI C的扩展1.C51扩展的关键字
(1)变量或数据类型
*为C51专有数据类型(不能用指针对其存取)
1.bit型变量可用于变量类型和函数声明、函数返回值等,存储于内部RAM的20H~2FH单元中
2.可位寻址说明区使用sbit声明可独立访问可位寻址对象的位。sbit声明要求基址对象的存储器类型为bdata,否则只有绝对的位声明方法是合法的。
3.特殊功能寄存器(SFR)用来控制定时/计数器、串口、I/O口及其他部件
(2)内存区域的指定
二、单片机C语言程序中的常用运算1.关系运算符结果只能是0或1
2.逻辑运算符与&&、或||、非!如:(a<100)&&(b<=40)(a<100)||(b<=40)(!(s>10))3.位运算符六种位运算符:
(1)按位与运算只有对应的两个二进位均为1时,结果为1,否则为0
(2)按位或运算有1为1
(3)按位异或运算相异为1
(4)求反运算
(5)左移运算
(6)右移运算
三、stc8h8k64u单片机c51程序框架
本帖最后由 organic 于 2023-9-4 16:15 编辑
陈教授第十二集实践打卡
该集介绍了stc8h的操作例子:延迟、流水灯和EEPROMD的操作
1.延迟操作
2.流水灯
3.EEPROM
EEPROM具体内容可见说明书第18章
听陈教授第十三集笔记
一、中断的相关概念1.中断的概念所谓中断是指计算机在执行其他程序的过程中,当出现了某些异常事件或某种请求时, CPU暂时中止正在执行的程序,而转去执行对异常事件或某种请求的服务程序。当服务完毕后,CPU 再回到被暂时中止的程序继续执行。
2.其他中断的相关概念
3.中断的优先级
4.中断的优势大大提高了工作效率和处理问题的灵活性。
①解决了快速CPU和慢速外设之间的矛盾,可使CPU和外设并行工作。②可及时处理控制系统中许多随机参数和信息。③具备了处理故障的能力,提高了机器自身的可靠性。 中断和调用了程序之间的区别 中断 调用子程序 产生是随机的 程序中事先安排好的 既保护断点,又保护现场 可只保护断点 为外设服务和为处理各种事件服务 为主程序服务(与外设无关)5.开中断和关中断(中断允许和中断禁止)可通过指令设置相关特殊功能寄存器的内容来实现。只有在开中断的情况下,才有可能接受中断源的请求。6.保护现场和恢复现场进入子程序或中断处理程序后保护相关寄存器中的值的操作,叫做保护现场;子程序返回或中断处理返回前,恢复相关寄存器中的值的操作,叫做恢复现场。
保护现场的方法是将现场条件(寄存器的值)先推入(使用PUSH命令)堆栈保存,然后再使用这些寄存器,返回主程序前,弹出(使用POP指令)寄存器的值这些功能都要通过堆栈操作来实现。7.堆栈堆栈区十将内部存储器的一部分区域作专门用于堆栈的区域。堆栈操作采用后进先出(最后存入的数据将被最先取出)。堆栈区当前的栈顶地址用堆栈指针寄存器(SP)中的值表示,即SP始终指向栈顶。
8.中断的撤除在响应中断请求后,返回主程序之前,该中断请求标志应该撤除,否则,单片机执行完中断服务程序会误判为又发生了中断请求而错误地再次进入中断服务程序。单片机中有些中断请求标志会自动撤除,有些不能自动撤除,必须用户使用相应的指令撤除。
二、STC8H8K64U单片机的中断源1.中断源
2.中断源及控制
(中断号为查询次序更准确)3.中断标志位
听陈教授第十四集:
4.中断的允许、禁止及优先级(1)中断的开放和禁止
(2)中断优先级
5.单片机中断处理过程(1)中断响应的条件及过程
(寄存器IE为举例)
(2)中断服务
(3)中断请求的撤除
中断举例C语言:
汇编语言:
实操:
实现按下INT0后小灯亮灭
听陈教授第十五集:
定时器/计数器1.定时器/计数器的作用
2.定时器/计数器的一般结构
3.单片机CPU和定时器相关寄存器
4.定时/计数器的工作模式
听陈教授第十六集:
1.定时/计数器量程的扩展
2.定时/计数器应用举例
题目:
汇编代码:
c语言:#include"stc8h.h"unsigned char i ;void Timer0_Init(void);void main(void){ P4M1=0XFF; P4M0=0XFF; P6M1=0X0; P6M0=0X0; P40=0; Timer0_Init(); i=10; ET0=1; //允许T0中断 EA=1; //开放总中断 while(1);}void Timer0_Init(void)//50毫秒{AUXR &=0X7F;//12T模式 TMOD &=0XF0;//设置定时器模式 TL0=0X00; //设置定时初值 TH0=0X4C; TF0=0; //清除TF0标志 TR0=1; //定时器0开始计时}void T0_ISR(void) interrupt 1{ i--; if(i==0) { P60=~P60; i=10; }} T2的应用:每隔4秒将P6.0状态取反 #include"stc8h.h"unsigned char i ;void Timer2_Init(void);void main(void){ P4M1=0XFF; P4M0=0XFF; P6M1=0X0; P6M0=0X0; P40=0; Timer2_Init(); i=80; EA=1; //开放总中断 while(1);} void Timer2_Isr(void) interrupt 12{ i--; if(i==0) { P60=~P60; i=80; }} void Timer2_Init(void) //50毫秒@11.0592MHz{ AUXR &= 0xFB; //定时器时钟12T模式 T2L = 0x00; //设置定时初始值 T2H = 0x4C; //设置定时初始值 AUXR |= 0x10; //定时器2开始计时 IE2 |= 0x04; //使能定时器2中断}(此代码小灯的亮灭时间为4s)
页:
1
[2]