1.编写单片机流水灯程序,需要用位移方法实现流水灯效果#includevoid delay(unsigned int xms);{………. //省略延迟函数内容}void main(){P1=_______;//将 1111 1110 的十六进制赋值给 P1 口for(i=___;i<____;_______)//完成 8 次循环{delay(200);P1=P1______1;//将 P1 当前值右移 1 位}}
请用 C 语言编写显示一个 LED 数码管显示学号的程序,要求使用 display函数实现。#include#define uchar unsigned charuchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极段编码uchar scl[]={0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd};// 注意 0x7f 为第一个数目管被选择。void delay(int x){……….}void display(_______, _____)//定义俩个形式参数,用于做段码和位码{P1=______;//将数组中的段码发送到 P1 端口P2=______;//将数组中的位码发送到 P2 端口delay(______);//延时 100ms}void main(){while(1){display(__ ,___);//显示学号后 4 位display(__ ,___);//显示学号后 4 位display(__ ,___);//显示学号后 4 位display(__ ,___);//显示学号后 4 位
请用 C 语言编写一个俩个中断服务程序,中断 0 优先级高于中断 1#include#define uchar unsigned charuchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极段编码uchar wei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//共阳极位编码void delay(int x){……}void display(int x,y){………}void main(){______=1;//打开中中断开关______=1_;//打开外部中断 0 开关_____=1;//打开外部中断 1 开关____=1;//设置外部中断 0 为跳沿触发方式____=____;//设置外部中断 1 为低电平触发方式while(1){……..}}void int0_isr(void) interrupt ______ using 1 //填写外部中断 0 的中断号{while(1){P0=0x_____;//根据共阳极段码,将数值 2 的段码发到 P0 口P2=0x_____;//根据共阳极的位码,数码管第二位显示数值“1”}}void int1_isr(void) interrupt _____ using 2 //填写外部中断 1 的中断号{uchar lsd[]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e};//流水灯编码{……….//省略流水灯的实现过程}}
要求用计数器1,实现显示按键次数的功能#includechar tab[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};char wei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};int temp=0;void Delay(unsigned int i){ ...}void display(int a,b){...}void main(){_______=0x____;//设置定时器/计数器1工作方式TH1=0x_____;//设定计数器1的高位初始值TL1=_______;//设定计数器1的低位初始值______=1;//打开中断总开关_____=____;//打开计数器1中断允许开关_____=____;//启动计数器1while(1);{}}void T1_int(void) interrupt 3{_____=0;//关闭中断总开关TH1=0x_____;//再次设定计数器1的高位初始值TL1=_______;//再次设定计数器1的低位初始值if(TF1==1) //如果计数器1溢出,则显示当前次数{display (______,0);}______++;//显示的次数自加1_____=1;//再次打开中断总开关}