常州工学院单片机及应用系统设计2021-2022 学年第 二 学期 考试类型 开卷 课程编码 0302005

 

 

 

第一题

#include "SC95F861x_C.H"

#include <INTRINS.H>

unsigned char keydata=0;

void delay(unsigned int timer)      //延时函数

{

  while(timer>0)

timer--;

}

void IOinit()

{

P5CON=0x00;

P5PH=0x03;

P3CON=0xFF;

P3PH=0xFF;

}

void readkey()

{

if(P51==0)

{

delay(1000);      //延时去抖

if(P51==0)

{

keydata=1;

}

}

else if(P50==0)

{

delay(1000);

if(P50==0)

{

keydata=2;

}

}

}

void main()

{

unsigned char data=0x7F;

IOinit();

while(1)

{

readkey();

if(keydata==1)         //S1按下,做所有led灯循环点亮

{

P3=data;

data=_cror_(data,1);   //循环右移

delay(50000);

}

else if(keydata==2)

{

P3=0xFF;         //即S2按下,做熄灭所有led灯

}

  

}

}

第二题

#include "SC95F861x_C.H"

#include <INTRINS.H>

void delay(unsigned int timer)

{

  while(timer>0)

timer--;

}

void delay1(unsigned int timer1)

{

  while(timer1>0)

timer1--;

}

void delay2(unsigned int timer2)

{

  while(timer2>0)

timer2--;

}

void IOinit()

{

P0CON=0x03;

P0PH=0x43;

P4CON=0x00;

P4PH=0x01;

}

void EXINT0init()

{

INT0F=0x40;      //P06下降沿触发

EINT0=1;                  //打开分开关

EA=1;                    //打开总开关

}

void EXINT1init()

{

INT1F=0x01;  //        外部中断1设置为P40下降沿触发

EINT1=1;                  //打开分开关

}

void EXINT0() interrupt 0

{

delay1(1000);            //延时去抖

if(P06==0)

{

P00=0;

P01=0;

}

}

void EXINT1() interrupt 2

{

delay2(1000);         //延时去抖

if(P40==0)

{

P00=1;

P01=1;

}

}

void main()

{

IOinit();

P00=1;

P01=1;

EXINT0init();

EXINT1init();

while(1)

{

  

}

}

第三题

#include "SC95F861x_C.H"

#include <INTRINS.H>

int timer0counter=0;

int timer0counter1=0;

bit BUZZdata=0;

bit old=0;

void delay(unsigned int timer)

{

  while(timer>0)

timer--;

}

void IOinit()

{

P5CON=0x00;

P5PH=0x08;

P2CON=0x80;

P2PH=0x80;

P1CON=0x20;

}

void TIMER0init()

{

TMCON=0x00;        //设置不分频

TMOD=0x21;         //定时器0---方式1,定时器1-----方式2

TL0=(65536-2667)%256; //----1ms

TH0=(65536-2667)/256;

ET0=1;              //打开分开关

TR0=1;              //打开定时器开关

EA=1;               //打开总开关

}

void TIMER0() interrupt 1

{

TL0=(65536-2667)%256;  //方式1要手动置位

TH0=(65536-2667)/256; 

timer0counter++;

if(timer0counter>499)        //定0.5s

{

P27=!P27;

timer0counter=0;

}

if(BUZZdata==1)

{

P15=!P15;

timer0counter1++;

if(timer0counter1>4999)   //蜂鸣器响5s后停止

{

timer0counter1=0;

BUZZdata=0;

}

}

}

void readkey()

{

if(P53==0)

{

delay(1000);

if(P53==0&&old==0) //让按键只识别一次P53等于0,一直按着按键也只是别一次

{

BUZZdata=1;

old=1;

}

}

else if(P53==1)

{

old=0;

}

}

void main()

{

IOinit();

P27=0;

TIMER0init();

while(1)

{

readkey();

}

}

第四题

#include "SC95F861x_C.H"

unsigned char recv=0;

void delay(int timer)

{

while(timer>0)

{

timer--;

}

}

void IOinit()

{

P3CON=0x84;

P3PH=0x80;

P2CON=0x00;

}

void URAT0init()

{

  SCON  = 0X50;    //设置串口方式1,且允许接受

EUART = 1;      //打开分开关

TMOD=0x21;    //将定时器1设置为方式2

TH1 = (32000000 / 4800) / 256;   //设置波特率为4800

TL1 = (32000000 / 4800) % 256;

TR1 = 0;        //将定时器1开关关掉

EA=1;          //打开总开关

}

void uart0() interrupt 4

{

if(RI)

{

RI=0;

recv=SBUF;    //接收数据

if(recv==0x55)

{

P37=0;

SBUF=0x55;

}

else if(recv==0xAA)

{

P32=1;

SBUF=0xAA;

}

else if(recv==0x50)

{

P37=1;

SBUF=0x50;

}

else if(recv==0xA0)

{

P32=0;

SBUF=0xA0;

}

}

}

void main()

{

IOinit();

URAT0init();

while(1)

{

}

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8167.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现PSO-DNN粒子群算法优化深度神经网络的数据多输入单输出回归预测

回归预测 | MATLAB实现PSO-DNN粒子群算法优化深度神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现PSO-DNN粒子群算法优化深度神经网络的数据多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 回归预测 | MATLAB实现PSO-DNN粒子…

【Java基础教程】(二)入门介绍篇 · 下:从JDK下载安装到第一个“Hello World!”程序,解析PATH和CLASSPATH环境变量的妙用~

Java基础教程之入门介绍 下 本节学习目标1️⃣ JDK安装与配置2️⃣ 第一个Java程序&#xff1a;“Hello World!”3️⃣ 环境变量 CLASSPATH&#x1f33e; 总结 本节学习目标 JDK 安装与配置&#xff1b;理解环境变量PATH和CLASSPATH的主要作用&#xff1b;运行第一个Java程序…

TypeScript 自定义装饰器

&#xff08;预测未来最好的方法就是把它创造出来——尼葛洛庞帝&#xff09; 装饰器 装饰器一种更现代的代码模式&#xff0c;通过使用的形式注入在属性&#xff0c;寄存器&#xff0c;方法&#xff0c;方法参数和类中&#xff0c;比如在Angular&#xff0c;Nestjs和midway等…

E类变换器仿真

1 参数计算&#xff08;待续&#xff09; &#xff08;1&#xff09;确定振荡频率&#xff1a; &#xff08;2&#xff09;计算各器件参数&#xff1b; 2 电路仿真 &#xff08;1&#xff09;电路图 &#xff08;2&#xff09;电路分析 3 结果 &#xff08;1&#xff09;…

微信小程序+SpringBoot接入后台服务,接口数据来自后端

前言 前两天开发了一个微信小程序项目&#xff0c;只不过接口数据是自己设置的假数据。然后我就想将这些假数据替换掉。这些数据来自接口&#xff0c;之前做过前后端分离的项目&#xff0c;我就想能不能直接调用那些后端数据接口。结果是可以的。以下是自己编写的部分方法 步骤…

【IDE 小程序】小程序控制台 不打印 console.log问题

小程序控制台 不打印 console.log问题 全局搜索compress.drop_console&#xff08;一般在config文件中&#xff09;&#xff0c;设置为false&#xff0c;再重新打开小程序即可

【JUC-7】ReentrantLock (可重入锁)基础

ReentrantLock (可重入锁) ReentrantLock实现了Lock接口, 内部通过继承AQS, 实现了一个同步器. 可以通过同步器来创建Condition条件变量, 可以用作容器, 存放不同条件的等待线程. 说明ReentrantLock与AQS的关系 类图: 相对于synchronized, 都支持可重入. 它还具备如下特点: …

对弈人工智能!myCobot 280开源六轴机械臂Connect 4 四子棋对弈

Connect 4 myCobot280 Introduction Hi,guys.今天我们来介绍一下人工智能下棋&#xff0c;我们将用机械臂来作为对手跟你进行下棋。 人工智能下棋的研究可以追溯到20世纪50年代。当时&#xff0c;计算机科学家开始探索如何编写程序&#xff0c;使计算机能够下象棋。其中最著…

Linux 解决root用户被限制连接服务器

Linux 解决root用户被限制连接服务器 1. 问题描述2. 解决问题2.1 方式一&#xff08;忘记root密码的情况&#xff09;2.2 方式二&#xff08;知道root密码的情况&#xff09; 3. 其他 1. 问题描述 使用 root 用户不能链接服务器&#xff0c;密码对&#xff0c;就是连接不上&am…

VBA之正则表达式(42)-- 快速提取名称

实例需求&#xff1a;A列为待处理数据&#xff0c;现需要从中提取商品名、通用名、胰岛素笔相关信息&#xff0c;保存到B列至D列&#xff0c;需要注意如下几点&#xff1a; 胰岛素笔&#xff08;E列&#xff09;数据只存在于每组产品的第一行记录中&#xff0c;例如第2行数据中…

Apikit 自学日记:保存、使用测试用例

API测试用例是SaaS版本企业版才能使用的功能&#xff0c;免费版用户可通过付费升级后使用。 API管理应用中的测试用例管理涉及到两个场景&#xff1a;单接口测试用例管理 和 多接口测试用例批量测试。 一、单接口测试用例管理 功能入口&#xff1a;API管理应用 / 选中某个项目…

vscode copilot长时间没反应

检测问题 首先看一下OUPUT插件信息有什么异常 如果没有异常&#xff0c;但是也没输出 那是请求没有相应的原因 可以在vscode里设置一下代理 参考&#xff1a;https://github.com/orgs/community/discussions/29127