有关51单片机中断的形式和C语言编程格式[精选5篇]

时间:2019-05-14 23:08:27下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《有关51单片机中断的形式和C语言编程格式》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《有关51单片机中断的形式和C语言编程格式》。

第一篇:有关51单片机中断的形式和C语言编程格式

有关51单片机中断的形式和C语言编程格式

void INT0()interrupt 0 using 1 {.........} interrupt 0 指明是外部中断0; interrupt 1 指明是定时器中断0; interrupt 2 指明是外部中断1; interrupt 3 指明是定时器中断1; interrupt 4 指明是串行口中断;

using 0 是第0组寄存器; using 1 是第1组寄存器; using 2 是第2组寄存器; using 3 是第3组寄存器;

例如:

/*-----------------

外部中断程序-----------------*/ void ISR_Key(void)interrupt 0 using 1 { P1=~P1;

//s3按下触发一次,P1取反一次 }

/*-----------------

串口中断程序-----------------*/ void UART_SER(void)interrupt 4 //串行中断服务程序 {

unsigned char Temp;

//定义临时变量

if(RI)

//判断是接收中断产生

{

RI=0;

//标志位清零

Temp=SBUF;

//读入缓冲区的值

P1=Temp;

//把值输出到P1口,用于观察

SBUF=Temp;

//把接收到的值再发回电脑端

}

if(TI)

//如果是发送标志位,清零

TI=0;}

第二篇:--单片机C语言编程实训

实习报 告

实习地点:201机房

实习时间:2014.12.1——2014.12.6 实习项目:单片机C语言编程实训 指导老师:骆

乐 姓

名:

级:电信3121

一、实习内容 1.计算字符的ASCII码

编写一个程序,在终端输入一个字符,输出它的ASCII码。解题思路:通常我们输出一个字符一般用printf(“%c”,c);的形式,因为输出格式规定的是“%c”,因此表示以字符的形式输出,所以我们看到的是相对应的ASCII码的字符形式。

用char定义字符a,a的值为任意值。输出结果a=%d。源代码:

#include int main(){ char c;scanf(“%c”,&c);printf(“Ascii=%dnDCF14”,c);getch();} 程序截图:

2.嵌套if-else语句的妙用

学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办

法是:小羽60分为E类;60分至70分(不含70分)为D类;70分至80分(不含)为C类;80分至90分(不含)为B类;90分以上为A类。设计一个程序。对输入的成绩进行等级划分。

解题思路:先把头文件和主函数输入。定义score为整型变量,定义grade为字符型变量。定义score为任意值scanf(“%d”,score)。使用多分支条件语句,判断趁机的等级。

源代码:

#include void main(){ int score;char grade;scanf(“%d”,&score);if(score>=90)grade='A';else if(score>=80)grade='B';else if(score>=70)grade='C';else if(score>=60)grade='D';else grade='E';printf(“score=%d,grade=%c,nDCF 14”,score,grade);getch();

}

程序截图:

3.判断日期

输入一个日期(年月日),输出这是某年的第几天。源代码:

#include “stdio.h” void main(){ int year,month,day;int cday;scanf(“%d %d %d”,&year,&month,&day);switch(month){ case 1: cday = 0;break;case 2: cday = 31;break;case 3: cday = 31+28;break;case 4:

cday = 31+28+31;break;case 5: cday = 31+28+31+30;break;

case 6: cday = 31+28+31+30+31;break;case 7: cday = 31+28+31+30+31+30;break;case 8: cday = 31+28+31+30+31+30+31;break;case 9: cday = 31+28+31+30+31+30+31+31;break;case 10: cday = 31+28+31+30+31+30+31+31+30;break;case 11: cday = 31+28+31+30+31+30+31+31+30+31;break;

case 12:

cday = 31+28+31+30+31+30+31+31+30+31+30;

break;} cday += day;

if((year % 4 ==0 && year % 100!=0 || year % 400 == 0)&& month > 2){ cday += 1;} printf(“%d,n DCF 14 ”,cday);

getch();}

程序截图:

4.打印特殊图案

请设计一个程序,实现在屏幕上输出一个下面的图案 解题思路:直接输入编程,但要注意*间的空格。源代码:

#include void main(){ printf(“

* n * * * n* * * * *n ,DCF 14 n”);getch();}

程序截图:

5.求两个数的最大公约数和最小公倍数

编写一个程序计算两个正整数的最大公约数和最小公倍数

源代码:

#include

int main(int argc,int *argv[]){ int num1,num2,temp;int a,b;a > b;printf(“please input 2 number:”);scanf(“%d,%d”,&num1,&num2);if(num1 < num2){ temp = num1;num1 = num2;num2 = temp;} a = num1;b = num2;while(b){ temp = a % b;a = b;b = temp;}

printf(“the zuidagongyuehsu:%d,the zuixiaogongbeishu:%dn”,a,num1 * num2 / a);printf(“%dn,dcf 14 n”);system(“pause”);return 0;getch();}

程序截图:

6.猴子吃桃问题

有一只猴子第一天摘下若干个桃子,当即吃掉了一半,又多吃了一个;第二天又将剩下的桃子吃了一半,有多吃了一个;按照这样的吃法每天都吃前一天剩下的桃子的一半又一个。到了第10天,就只剩一个桃子。问题:这只猴子第一天摘了多少个桃子。源代码:

#include

void main(){ int day,x1,x2;day=9;x2=1;while(day>0){ x1=(x2+1)*2;x2=x1;day--;} printf(“total=%dn dcf 14”,x1);getch();}

程序截图:

7.谁在说谎

3个嫌疑犯在法官面前各执一词,甲说:已在说谎;已说:甲在说谎;丙说:甲已两人都在说谎。法官为了难,甲乙丙三人到底谁在说谎,睡说的是真话呢?

源代码:

#include

int main(int argc, char *argv[]){

int a,b,c;

for(a=0;a<2;a++)

for(b=0;b<2;b++)

for(c=0;c<2;c++)

if((a&&!b ||!a&&b)&&(b&&!c || b&&c)&&(c &&a+b == 0 ||!c&&a+b!= 0))

printf(“j told a %sn”,a?“truth”:“lie”);

printf(“y told a %sn”,b?“truth”:“lie”);

printf(“b told a %sn”,c?“truth”:“lie”);

printf(“%dn dcf 14n”);

getch();}

程序截图:

第三篇:单片机外围电路设计及C语言编程视频

单片机外围电路设计及C语言编程视频教程介绍

这是一部学单片机革命性的视频教程,教程全部十二讲,每讲3小时左右,讲座从最基本的预备知识开始讲起,非常详细的讲解KEIL编译器的使用,包括软件仿真,测定时间,单步运行,全速运行,设置断点,调试,硬件仿真调试,变量观察等,整个过程全部用单片机的C语言讲解,从C语言的第一个主函数MAIN讲起,一步步一条条讲解每一个语法,每条指令的意思,即使对单片机一巧不能,对C语言一无所知,通过本课程十节课的内容也可以让你轻松掌握51单片机的C语言编程设计,全新的讲课风格跳过复杂的单片机内部结构知识,首先从单片机的应用讲起一步步深入到内部结构,让学生彻底掌握其实际应用方法,把51单片机的所有应用每个部分都讲解的非常仔细,在讲解单片机应用的同时将单片机的常用外围电路设计及电阻,电容选值等都讲的清清楚楚,教师在教室前面用电脑一条一条写程序,旁边用TX-1C单片机实验板一个实验一个的演示,给学员解释每条指令的意思及原理,通过十天的时间让学生完全掌握单片机的C语言编程及单片机外围电路设计的思想。全程的屏幕,声音,用屏幕录像,实验板现象用摄像头拍摄,这部教程算是国内首个如此创新的以教师亲自实践为主,学员现场写程序,直接下载到实验板看现象,讲单片机的视频教程,只要你认真看,认真听,保证十天让你学会单片机应用和C语言编程。

教师推荐书籍如下:

1.如果要学C语言基本知识请看 谭浩强写的《C程序设计》 教师推荐的单片机书籍为以下两本: 2.新编MCS-51单片机应用设计 哈尔滨工业大学出版社

张毅刚

上书主要以汇编语言为主,对单片机内部结构介绍较详细,初学者可选择本书,在听讲本课程的同时,不但学会了C语言,而且通过查看本书还可了解汇编语言。3.8051系列单片机C程序设计完全手册 人民邮电出版社

求是科技

第四篇:C语言编程

#include(stdio.h)

main()

{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};

char again='y';

while(again=='y'){ srand((int)time(0));

while(i4){ k=(int)rand()%10;

for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}

if(k==-1)continue;question[i]=k;i++;}/*while i*/

for(i=8;i0;i--)/*还有8次机会*/

{ A=0;B=0;printf(“n你还剩下%d次机会。”,i);

printf(“n请输入四个0-9之间的数字,中间用空格隔开n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);

for(j=0;j4;j++)

for(k=0;k4;k++)

{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/

if(A==4){ again='0';

printf(“n你赢了,还继续猜吗?(y/n)”);

while(again!='y'&&again!='n')

scanf(“...%c”,&again);break;}/*if*/

printf(“n%dA%dB”,A,B);if(i==1){ again='0';

printf(“n你输了,正确答案是”);

for(j=0;j4;j++)

printf(“%dt”,question[j]);

printf(“n还继续吗?(y/n)”);

while(again!='y'&&again!='n')scanf(“%c”,&again);

printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感谢您玩这个游戏。”);}

第五篇:C语言经典编程题(推荐)

C语言经典编程题

题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。

[cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

// 用数组定义一个字符串

char array[50] = “zha junju zhamengjun z mengjun”;

char *str = array;// 定义指针变量str,指向数组array

int len = 0;// 定义变量len,用于计数

int max = 0;// 定义变量max,存放最长单词的长度

char *p = 0;// 定义指针变量p,指向最长单词的首字符

10.11.// 判断指针当前指向的字符是不是''

12.while(*str!= '')13.{

14.if(*str!= ' ')// 判断字符是不是空格 15.{

16.len++;// 计数加1 17.18.// 判断最大长度跟len长度的大小

19.if(max < len){

20.max = len;// 如果max小于len,将len赋值给max

21.p = str1];

46.} 47.else

48.{

49.sumDaysOfMonth += pingYear[monthDay;// 定义整型变量days,存储一个月内相隔的天数

54.int sumDays = 0;// 定义整型变量sumDays,存储两个时间点相隔的总天数

55.56.// 得到两个时间点相隔的总天数

57.sumDays = sumDaysOfYear + sumDaysOfMonth + days;58.59.printf(“两个时间点相隔%d天n”, sumDays);60.61.// 根据相隔的天数,判断小明遇到的人

62.if((sumDays % 2 == 0)&&(sumDays % 3 == 0))63.{

64.printf(“小明既结识了帅哥又结识了美女!n”);65.}

66.else if(sumDays % 2 == 0)67.{

68.printf(“小明结识了帅哥!n”);69.}

70.else if(sumDays % 3 == 0)71.{

72.printf(“小明结识了美女!n”);73.} 74.else

75.{

76.printf(“小明没有结识帅哥和美女n”);77.} 78.}

心得体会:(1)利用for循环遍历,if条件来判断是平年还是闰年,求出相隔年数的累加的天数(2)同理,利用第一步的方法,求出相隔月数的累加的天数,只是要注意每月的天数,根据平年和闰年的不同分别保存在两个不同的数组中,以便利于累加

(3)将输入的日减1,计算出当月相隔的天数,最后求出两个日期相隔的总天数。(4)根据总天数取余2和3,判断出小明当天结识的是美女还是帅哥。

题目05:提示用户输入一个正整数n,利用while循环计算并输出:1-2+3-4+5-6+7…+n的和。

[cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

// 1.定义变量存储用户输入的整数

int n = 0;

// 2.判断n是否为正整数

while(n <= 0){

// 2.1 提示输入

printf(“输入一个正整数:n”);

10.11.// 2.2 让用户输入

12.scanf(“%d”, &n);13.} 14.15.// 3.计算阶乘

16.int sum = 0;// 存储计算结果

17.int current = 0;// 当前要累加的数值

18.while(current < n){ 19.current++;20.21.// 如果是偶数,就减

22.if(current % 2 == 0){ 23.sum-= current;24.} else { // 如果是奇数,就加

25.sum += current;26.} 27.} 28.29.// 4.输出结果 30.printf(“%dn”, sum);31.32.return 0;33.}

心得体会:

(1)确保从键盘上输入的是一个整数(用while来判断);(2)用while循环来遍历从1到n的值;

(3)通过奇偶性判断所要累加数值的正负性,奇数就累加,偶数就累减。

题目06:提示用户输入一个正整数n,计算并输出n的阶乘结果:1*2*3*…*n。

[cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

// 1.定义变量存储用户输入的整数

int n = 0;

// 2.判断n是否为正整数

while(n <= 0){

// 2.1 提示输入

printf(“输入一个正整数:n”);

10.11.// 2.2 让用户输入

12.scanf(“%d”, &n);13.} 14.15.// 3.计算阶乘

16.int result = 1;// 存储计算结果

17.int current = 1;// 当前的乘数

18.while(current <= n){

19.result *= current;// 累乘每次的乘数

20.current++;// 乘完一次就++

21.} 22.23.// 4.输出阶乘结果

24.printf(“%d!= %dn”, n, result);25.26.return 0;27.}

心得体会:

(1)可以利用for循环或者while循环进行遍历,利用累乘即可求出值。(2)还可以利用递归来做,更简单。

题目07:编写一个函数,判断某个字符串是否为回文。回文就是从左边开始读 和 从右边开始读 都是一样的,比如“abcba” [cpp] view plain copy print?

1.2.3.4.5.6.7.8.9.int main(){

printf(“%dn”, isHuiwen(“a”));

return 0;}

/*

返回1代表是回文

返回0代表不是回文

10.*/ 11.int isHuiwen(char *str)

12.{

13.// 1.定义一个指向变量left指向字符串的首字符

14.char *left = str;

15.// 2.定义一个指向变量right指向字符串的末字符

16.char *right = str + strlen(str)1)+ count(n);// 求出每一个阶乘的累加和

58.} 59.60.// 定义和求出一个累加和

61.int count(int n)

62.{

63.if(n == 1)64.return 1;

65.return count(n1;22.23.// 如果左边元素的下标 < 右边元素的下标

24.while(left < right)25.{

26.// 利用中间变量交换两个元素的值

27.int temp = array[left];28.array[left] = array[right];29.array[right] = temp;30.31.// 交换一次后,左边元素下标增加,右边元素下标减小

32.33.left++;34.right--;35.} 36.}

心得体会:

(1)首先要明白一点,为什么不能通过sizeof(array)/ sizeof(int)来求出数组元素的个数?因为当数组作为参数传递的时候,函数的参数array实际上当做变量来存储传来的数组首元素的地址。而每一个指针变量占用8个字节。

(2)分别拿出数组首元素和数组尾元素,然后利用中间变量交换两个元素的值。(3)利用while循环,遍历数组元素,并使left< right保证循环到中间即可,否则每个元素又进行一次交换,结果值没有改变。

(4)函数reverse不需要返回值,因为改变了形参数组也就改变了外面的实参数组,因为数组是按址传递的。

下载有关51单片机中断的形式和C语言编程格式[精选5篇]word格式文档
下载有关51单片机中断的形式和C语言编程格式[精选5篇].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    经典C语言编程100例

    经典C语言编程100例(1-30) 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。......

    c语言编程练习

    本实验所有题目均要求使用指针。 1.写一函数,将一个3*3的整型矩阵转置。2.将两个按升序排列的数组合并成一个数组,并使合并后的数组也按升序排列。 要求: (1)输入两个数组(按升序);......

    C语言编程100题

    经典C语言程序设计100例 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组......

    单片机C语言学习

    单片机C语言之一___________________________________________________________________ _____________________ 预处理 一》宏定义: 1、不带参数: #define 标识符 常量表达......

    单片机c语言学习心得转载

    单片机c语言学习心得(一)相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚,更不用说他的英文全称和......

    单片机C语言学习心得

    8、指针的使用 8.1 在定义的时候,*ap中的‘*’是指针类型说明符;在进行指针预算时,x = *ap 中的‘*’是指针运算符。 8.2 如果在已定义好的指针变量,并引用,即 int *ap, int a; a......

    单片机C语言知识点大全

    【C语言】 【数据类型】 【转义字符】 【语句】 【#define】 #define 新名 原名 【typedef】 typedef 原类型名 新类型名; 【sbit】 sbit P1_0=P1^0; 在reg52.h或reg51.h的......

    单片机C语言学习心得

    8、指针的使用 8.1 在定义的时候,*ap中的‘*’是指针类型说明符; 在进行指针预算时,x = *ap 中的‘*’是指针运算符。 8.2 如果在已定义好的指针变量,并引用,即 int *ap, int a;......