C状态机,switch-case版;
C状态机,查表法。
2024/4/28 21:48:46 33KB 状态机 查表法 switch-case
1
第一章....4【实例1】使用累加器进行简单加法运算:...4【实例2】使用B寄存器进行简单乘法运算:...4【实例3】通过设置RS1,RS0选择工作寄存器区1:...4【实例4】使用数据指针DPTR访问外部数据数据存储器:...4【实例5】使用程序计数器PC查表:...4【实例6】if语句实例:...4【实例7】switch-case语句实例:...4【实例8】for语句实例:...4【实例9】while语句实例:...5【实例10】do…while语句实例:...5【实例11】语句形式调用实例:...5【实例12】表达式形式调用实例:...5【实例13】以函数的参数形式调用实例:...5【实例14】函数的声明实例:...5【实例15】函数递归调用的简单实例:...5【实例16】数组的实例:...6【实例17】指针的实例:...6【实例18】数组与指针实例:...6【实例19】P1口控制直流电动机实例...6第二章....8【实例20】用74LS165实现串口扩展并行输入口...8【实例21】用74LS164实现串口扩展并行输出口...10【实例22】P0I/O扩展并行输入口...12【实例23】P0I/O扩展并行输出口...12【实例24】用8243扩展I/O端口...12【实例25】用8255A扩展I/O口...14【实例26】用8155扩展I/O口...19第三章....26【实例29】与AT24系列EEPROM接口及驱动程序...26【实例30】EEPROM(X5045)接口及驱动程序...30【实例31】与铁电存储器接口及驱动程序...33【实例32】与双口RAM存储器接口及应用实例...35【实例33】与NANDFLASH(K9F5608)接口及驱动程序...35第四章....43【实例34】独立键盘控制...43【实例35】矩阵式键盘控制...44【实例36】改进型I/O端口键盘...46【实例37】PS/2键盘的控制...49【实例38】LED显示...53【实例39】段数码管(HD7929)显示实例...54【实例40】16×2字符型液晶显示实例...55【实例41】点阵型液晶显示实例...61【实例42】LCD显示图片实例...63第五章....70【实例43】简易电子琴的设计...70【实例44】基于MCS-51单片机的四路抢答器...71【实例45】电子调光灯的制作...76【实例46】数码管时钟的制作...81【实例47】LCD时钟的制作...96【实例48】数字化语音存储与回放...103【实例49】电子标签设计...112第六章....120【实例50】指纹识别模块...121【实例51】数字温度传感器...121第七章....124【实例53】超声波测距...124【实例54】数字气压计...125【实例55】基于单片机的电压表设计...132【实例56】基于单片机的称重显示仪表设计...133【实例57】基于单片机的车轮测速系统...136第八章....138【实例58】电源切换控制...138【实例59】步进电机控制...140【实例60】单片机控制自动门系统...141【实例61】控制微型打印机...144【实例62】单片机控制的EPSON微型打印头...144【实例63】简易智能电动车...145【实例64】洗衣机控制器...149第九章....152【实例65】串行A/D转换...152【实例66】并行A/D转换...153【实例67】模拟比较器实现A/D转换...154【实例68】串行D/A转换...155【实例69】并行电压型D/A转换...156【实例70】并行电流型D/A转换...156【实例71】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的A/D转换...157【实例72】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的D/A转换...161第十章....164【实例73】单片机间双机通信...164【实例74】单片机间多机通信方法之一...166【实例75】单片机间多机通信方法之二...171【实例76】PC与单片机通信.
2023/8/13 0:42:44 929KB 51单片机 范例
1
该包是个代码包,里面是引见通过cpp实现的一个简单的注册回调框架,这个框架是基于成员函数指针+map实现的;
用于优化程序结构(比如:可以取代繁长的switch----case)。
2023/2/22 22:13:36 16KB function, cpp消息回调
1
自定义语言C--的词法系统1)类型系统:支持int、char、void基本类型,分别用词法记号表示为关键字int、char和void。
2)常量:字符常量(用单引号括起来)、字符串常量(用双引号括起来)、八/十/六进制整数常量(0开头表示八进制,0x开头表示十六进制)。
分别用词法记号表示为ch、str和num。
3)变量:与常量对应,使用标识符表示,词法记号表示为id。
4)表达式运算符:支持加减乘除、求余、取负、自增、自减算术运算,大于、大于等于、小于、小于等于、等于、不等于关系运算,与、或、非逻辑运算,表示为词法记号:‘+’,‘-’,‘*’,‘/’,‘%’,‘-’,‘++’,‘--’,‘>’,‘>=’,‘<’,‘<=’,‘==’,‘!=’,‘&&’,‘||’,‘!’。
注意:取负运算和减法运算在词法分析器里是被看做是同一个词法记号。
5)语句:支持赋值语句、do-while、while、for循环语句,if-else、switch-case条件分之语句、函数调用、函数返回、跳转等语句。
涉及的词法记号表示为赋值号‘=’,关键字do,while,for,if,else,switch,case,default,return,break,continue。
语句和函数体要求用大括号括起来,case和default后面需要跟冒号,因而需要包括各种分界符作为词法记号:‘{’,‘}’,‘;’,‘:’,‘(’,‘)’,‘,’。
2022/12/4 4:20:21 56KB 词法分析 编译原理 Lex实现
1
设计思想(1)程序主体结构部分:说明部分%%规则部分%%辅助程序部分(2)主体结构的说明在这里说明部分告诉我们使用的LETTER,DIGIT,IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward,references).这些代码应该再标记"%{"和"%}"之间;规则部分>可以包括任何你想用来分析的代码;我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能.(3)实现原理程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码方式的编码,用以区分之。
PL/0语言的EBNF表示::==;::=={|};::=+|-::=*|/::==|#|=::=a|b|…|X|Y|Z::=0|1|2|…|8|9三:设计过程1.关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf并为小写。
2."+”;”-”;”*”;”/”;”:=“;”:”;”=“;”“;”=“;”(“;”)”;”;”;”#”为运算符。
3.其他标记如字符串,表示以字母开头的标识符。
4.空格符跳过。
5.各符号对应种别码关键字分别对应1-13运算符分别对应401-418,501-513。
字符串对应100常量对应200结束符#四:举例说明目标:实现对常量的判别代码:digit[0-9]letter[A-Za-z]other_char[!-@\[-~]id({letter}|[_])({letter}|{digit}|[_])*string{({letter}|{digit}|{other_char})+}int_num{digit}+%%[|\t|\n]+"auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"register"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"unsigned"|"continue"|"for"|"signed"|"void"|"default"|"goto"|"sizeof"|"do"|"if"|"static"|"while"|"main"{Upper(yytext,yyleng);printf("%s,NULL\n",yytext);}\"([!-~])*\"{printf("CONST_string,%s\n",yytext);}-?{int_num}[.]{int_num}?([E][+|-]?{int_num})?{printf("CONST_real,%s\n",yytext);}"0x"?{int_num}{printf("CONST_int,%s\n",yytext);}","|";"|"("|")"|"{"|"}"|"["|"]"|"->"|"."|"!"|"~"|"++"|"--"|"*"|"&"|"sizeof"|"/"|"%"|"+"|"-"|">"|"="|">="|"<<="|"&="|"^="|"|="|"="{printf("%s,NULL\n",yytext);}{id}{printf("ID,%s\n",yytext);}{digit}({letter})+{printf("error1:%s\n",yytext);}%%#includeUpper(char*s,intl){inti;for(i=0;i<l;i++){s[i]=toupper(s[i])
2021/11/7 5:50:07 105KB 词法分析器制作
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡