单片机基础与实践简介.pptVIP

  • 5
  • 0
  • 约1.25万字
  • 约 60页
  • 2017-05-13 发布于湖北
  • 举报
单片机基础与实践简介

* KEIL C51 程序设计 C51数据声明的一般格式: [类型说明符][修饰符] 标识符[=初值]…… 例如:unsigned char code Flag = 0x0f; 就是声明一个无符号的char型变量Flag,并给他赋初值为0x0f;并且声明他所在的存储空间在片内统一编址的ROM中。声明中,如果没有修饰符,则数据默认的存储空间为data型,也就是在片内RAM中。 * KEIL C51 程序设计 一般简单程序的结构 包含头文件 宏定义 公共变量 子函数 int function1( unsigned int x) { 变量定义 语句执行 } …… main() { …… } main() { 变量定义 初始化寄存器 do { …… } while(1) } 复杂一些的程序? * + - * / (加 减 乘 除) = = (大于 大于等于 小于 小于等于) == != (测试等于 测试不等于) || ! (逻辑与 逻辑或 逻辑非 ) (位右移 位左移) | (按位与 按位或) ^ ~ (按位异或 按位取反) C-51的运算符与基本语句 if 选择语句 switch/case 多分支选择语句 while 循环语句 do-while 循环语句 for 循环语句 KEIL C51 程序设计 * 最简系统与演示程序 * 示例-行列式键盘接口 # include reg51.h # define uchar unsigned char # define uint unsigned int void dlms( void ); uchar kbscan( void ); void main ( void ) { uchar key ; while(1) { key =kbscan ( ) ; dlms( ) ; } } void dlms( void ) { uchar i ; for ( i=200; i0; i- -) { } } * uchar kbscan ( void ) /* 键扫描函数 */ { uchar scode, recode; P1=oxf0 ; if ( ( P1 0xf0 ) ! =0xf0 ) /* 若有键按下 */ { dlms ( ) ; /* 延时去抖动 */ if (( P1 0xf0 )! = 0xf0 ) { scode =0xfe ; /* 逐行扫描初值 */ while (( scode 0x10 ) !=0 ) { P1=scode ; /* 输出扫描码 */ if (( P1 0xf0 )! =0xf0 ) /* 本行有键按下 */ { recode= ( P1 0xf0 ) | 0x0f ; return (( ~scode ) + (~ recode ) ) ; /* 返回特征字节码 */ }

文档评论(0)

1亿VIP精品文档

相关文档