📄 demo.c
字号:
#include <stdio.h>
ioport unsigned int port0000; //IO映射寄存器 存放SRAM高3位地址
ioport unsigned int port0001; //IO映射寄存器 存放SRAM低16位地址
ioport unsigned int port0002; //IO映射寄存器 存放SRAM读写数据
ioport unsigned int port0003; //IO映射寄存器 用于控制
ioport unsigned int port0004; //IO映射寄存器 用于控制
main()
{
unsigned long int i=0,j=0,k;
k=port0004; //使能图像板控制位,图像板正常工作
port0003=0x00;
k=0;
k=0; //在此加断点,运行程序至此,按图像板复位S3,便可以采集图像.
//如下便是对图像的处理
k=port0003;
k=0;
k=0;
*(int *)0x301=0; //设定 A18~A16 地址 初始值为 0 (有效范围0~7)
for(j=0;j<8;j++) //循环8次,实现对SVEDIO上SRAM的全部寻址
{
port0000=*(int *)0x301; //实现高3位地址赋值
*(int *)0x300=0; //设定A15~A0 地址初始值为0(有效范围 0~65535)
for(i=0;i<65536;i++) //对64KRAM中的数据进行处理(先去掉色度信号,然后再反色)
{
port0001=*(int *)0x300; //实现低16位地址的赋值
// port0002=~port0002; //对SRAM中的数据取反
port0002=port0002&0xff00; //去掉低八位(色度信号)
port0002=port0002|0x0080;
*(int *)0x300=*(int *)0x300+1;//低A15~A0 地址加1
}
*(int *)0x301=*(int *)0x301+1; //高A18~A16地址加1
}
port0003=0x00;
k=0;
k=0; //在此加断点,运行程序至此,彩色图像变为黑白图像
k=port0003;
k=0;
k=0;
*(int *)0x301=0; //设定 A18~A16 地址 初始值为 0 (有效范围0~7)
for(j=0;j<8;j++) //循环8次,实现对SVEDIO上SRAM的全部寻址
{
port0000=*(int *)0x301; //实现高3位地址赋值
*(int *)0x300=0; //设定A15~A0 地址初始值为0(有效范围 0~65535)
for(i=0;i<65536;i++) //对64KRAM中的数据进行处理(先去掉色度信号,然后再反色)
{
port0001=*(int *)0x300; //实现低16位地址的赋值
port0002=~port0002; //对SRAM中的数据取反
port0002=port0002&0xff00; //去掉低八位(色度信号)
port0002=port0002|0x0080;
*(int *)0x300=*(int *)0x300+1;//低A15~A0 地址加1
}
*(int *)0x301=*(int *)0x301+1; //高A18~A16地址加1
}
port0003=0x00;
k=0;
k=0; //在此加入断点,运行程序至此,黑白图像反色
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -